kitapack Napisano Grudzień 1, 2006 Zgłoś Share Napisano Grudzień 1, 2006 Jak zrobić cosik takiego:w trakcie programu dowiaduję się ile wynosi zmienna k (np. k=2) oraz ile wynosi zmienna p (np. p=5).Teraz musze utworzyc tablice p-wymiarową, z czego każdy wymiar ma k-elementów, a więc:tablica[2][2][2][2][2]=x;gdzie x będzie wynosić 0 lub 1.Jak takie coś zrobić? (deklarowanie tablicy bardzo dużej odpada, ( czyli np int **************tablica gdzie potem wykorzystuje jedynie jej czastke)). Link do komentarza Udostępnij na innych stronach More sharing options...
Wosiedem Napisano Grudzień 1, 2006 Zgłoś Share Napisano Grudzień 1, 2006 [quote] Jak takie coś zrobić? (deklarowanie tablicy bardzo dużej odpada, ( czyli np int **************tablica gdzie potem wykorzystuje jedynie jej czastke)). [/quote]Skoro będziesz używał tylko tej jednej komórki to po co w ogóle ci tablica? Pozdrawiam, vo7 (; Link do komentarza Udostępnij na innych stronach More sharing options...
kitapack Napisano Grudzień 1, 2006 Autor Zgłoś Share Napisano Grudzień 1, 2006 Bo potrzebuje zrobic tablice mozliwosci (to znaczy np dla tablica[1][0][1][2][1]=1; tablica[1][0][1][2][2]=0 itd... a potem chce przekopiowac wszystkie elementy =1 do nowej mniejszej tablicy i to bedzie tzw. tablica mozliwych wystapien). Nie bede sie rozpisywal co ten program dokladnie robi, ale generalnie wczesniej mam powiedzmy 100 tablic tab2[x1][x2][x3]=1 gdzie kolejne x1, x2 oraz x3 przybieraja wartosci p1... do p5 i po prostu musze zrobic tablice wszystkich kombinacji (dla 5 zmiennych i 3 stanow dla kazdej zmiennej bedzie to wlasnie tablica tablica[3][3][3][3][3]) i przypisac 1 jesli taki stan jest mozliwy, a 0 gdy nie jest mozliwy. Link do komentarza Udostępnij na innych stronach More sharing options...
Wosiedem Napisano Grudzień 1, 2006 Zgłoś Share Napisano Grudzień 1, 2006 Wydaje mi się, że efekt jaki chcesz uzyskać jest łatwy do osiągnięcia bez używania tablic (a przynajmniej w taki sposób jaki proponujesz). Fajnie by było gdybyś opisał co dokładniej robi dany program - może jest jakieś inne, lepsze rozwiązanie Twojego problemu. Pozdrawiam, vo7 (; Link do komentarza Udostępnij na innych stronach More sharing options...
kitapack Napisano Grudzień 1, 2006 Autor Zgłoś Share Napisano Grudzień 1, 2006 A więc po kolei:program wylicza ileś tam powiedzmy a=30 funkcji, przy czym każda funkcja składa się z:funkcja[zm_1][zm_2][zm_3][wartosc_zm_1][wartosc_zm_2][wartosc_zm_3]=b;zm_1 to numer zmiennej ze zbioru p=5, podobnie zm_2 oraz zm_3. Czyli mając p=5 zmiennych zm_1 moze przybierać wartości od 1 do 5, analogicznie zm_2 oraz zm_3. Dalej mamy wartość pierwszej zmiennej, potem drugiej i na końcu trzeciej, gdzie wartość zmiennej może się równać 1, 2 lub 3. Wynik końcowy jest zawsze =1 (nie ma każdej kombinacji, gdyż wymieniono jedynie te które =1). A więc kilka przykładów:a=30 //liczba funkcji (tutaj tylko 4)p=5; //liczba zmiennychfunkcja_1[1][3][5][1][2][1]=1;funkcja_2[4][2][5][2][1][3]=1;funkcja_3[1][2][4][1][1][1]=1;funkcja_4[3][5][2][3][3][2]=1;... itd aż do funkcji nr 29(do tego momentu mam program napisany)A teraz chcę zrobić tablicę możliwości, to znaczy jeśli z powyższego przypadku (zakładając że mam tylko te 4 wypisane funkcje) zrobię kombinację to:Robię całą tablicę wszystkich możliwości (każdą kombinację, bo zmienna_1 może być równa 1, 2 lub 3 i analogicznie aż do zmienna_5). I teraz jeżeli sprawdziłem wszystkie funkcje a któryś parametr jest nieustalony to go odrzucamy z tablicy. Czyli:tablica[zmienna_1][zmienna_2][zmienna_3][zmienna_4][zmienna_5]=1;tablica[1][-][2][-][1]=0 //to wypisalem przyklad dla pierwszej funkcji bo zm_1=1, zm_3=2 i zm_5=1...I teraz w ten sposób uzupełniam każdą z kolejnych elementów tablicy i gdy wszystkie są uzupełnione to wtedy taki element =1.Mam nadzieje że choć w miare zrozumiale się wyraziłem Link do komentarza Udostępnij na innych stronach More sharing options...
KaYou Napisano Grudzień 1, 2006 Zgłoś Share Napisano Grudzień 1, 2006 Proponuje poczytac o tablicach dynamicznych.......... "(2b || !(2b)) == question" W. Shakespeare http://jakubniwa.pl - świat sztucznej inteligencji Link do komentarza Udostępnij na innych stronach More sharing options...
kitapack Napisano Grudzień 1, 2006 Autor Zgłoś Share Napisano Grudzień 1, 2006 tak... nie no o tablicach dynamicznych oczywiście czytałem, i jeśli wymiar tablicy jest stały (czyli że np ma być tablica[a][b]) a więc wymiar=2 to nie ma problemów. Gorzej jeśli się zmienia (raz mam tablica[a][b] a innym razem tablica[a][b][c][d][e]). Oczywiście szukałem już wcześniej, przed zapytaniem na forum i przerobiłem vectory, listy itd. ale ni chu chu nie potrafie zrobic tego o co mi chodzi... Podpowiedziano mi że mogę zrobić w liście tablicę jednowymiarową, a potem robić listę listy, lub listę listy listy... itd... ale jak to zrobić programowo? tak żeby każda lista inaczej sie nazywała? przecież nie będe w programie deklarował 50 list z różnymi nazwami... Link do komentarza Udostępnij na innych stronach More sharing options...
Wosiedem Napisano Grudzień 1, 2006 Zgłoś Share Napisano Grudzień 1, 2006 [quote] program wylicza ileś tam powiedzmy a=30 funkcji, przy czym każda funkcja składa się z:funkcja[zm_1][zm_2][zm_3][wartosc_zm_1][wartosc_zm_2][wartosc_zm_3]=b; [/quote]Masz na myśli coś takiego? [code=C++] void jakas_funkcja(typ zm1, ..., wartosc_zm_3); [/code]Mam jeszcze kilka pytań co do programu:-jak działa funkcja wyliczająca wartości (1 lub 0)?-jak często wyliczane są te wartości?-czemu służą? (chodzi mi o efekt, czyli np. wyliczanie PI, masy masła w maśle itp ) Pozdrawiam, vo7 (; Link do komentarza Udostępnij na innych stronach More sharing options...
DarkAndrew Napisano Grudzień 1, 2006 Zgłoś Share Napisano Grudzień 1, 2006 on po prostu chce stablicować wszystkie możliwe kombinacje parametrów funkcji i jeżeli tam funkcja wynosi 1 to wstawia 1 jeżeli nie to 0kolego może po prostu odwróć działanie funkcji (bo z tego co rozumiem wrzucasz ją do pętli i podstawiasz kolejne parametry) czyli zrób nie wyliczanie z parametrów wartości tylko z wartości parametrów.a jezeli się upierasz przy tej tablicy to proponuje takie rozwiązanie:przypuśćmy że to 1 albo zero to jest bool zmiennateraz robisz tak że deklarujesz jedną tablice jedno wymiarową czyli np bool tab[]a potem wyobraź sobie że dzielisz sobie tą tablice wielowymiarową na paseczki o długości to twoje "p" i wylicz sobie funkcje która składa z tamtej jednowymiarowej tablice wielowymiarowąjak bedziesz miał problem a ja czas to ci napisze może w pseudo kodzie jak to zrobić bo teraz mi sie niechce "Może wam pomoge, może nie, może pierdolcie w dupę się"-prof. Jarząbek Link do komentarza Udostępnij na innych stronach More sharing options...
kitapack Napisano Grudzień 1, 2006 Autor Zgłoś Share Napisano Grudzień 1, 2006 hmm tak, tylko że:funkcja zwraca nam ileś kombinacji "trójkowych".przykładowa kombinacja zwrócona przez funkcję: dla(zmienna1=2 zmienna5=1 zmienna3=1)=1to teraz w tej duzej tablicy p-wymiarowej powiedzmy że przedstawie tą linię:tablica[2][ ][1][ ][1]=0 //i teraz tablica[][][][][] moze być =1 tylko wtedy gdy wszystkie zmienne będą wyznaczone, ale wartości tych zmiennych muszą "współistnieć trójkami" to znaczy że zmienna1=2 tylko wtedy gdy zmienna5=1 oraz zmienna3=1 (to konkretnie dla tej trójki zwróconej przez funkcję, a takich trójek mam liczbę "n") i dla tego myśle że najprościej to będzie właśnie zrobić mając macierz z wszystkimi mozliwymi kombinacjami...hmm kombinowałem z vektorami i juz myślałem że będzie działać bo wszystko ładnie sobie w głowie tylko ułożyłem (że wektor będzie przechowywał wskaźniki do wektorów int, a kolejny wektor będzie przechowywał wskaźniki do wektora ze wskaźnikami itd...) ale niestety nie da sie przechowywać w wektorze wskaźników na inne wektory - chyba że ktoś wie jak to zrobić? (żeby przechowywać w wektorze wskaźniki na wektory?) bo może to jest właśnie jakieś rozwiązanie? Link do komentarza Udostępnij na innych stronach More sharing options...
kitapack Napisano Grudzień 2, 2006 Autor Zgłoś Share Napisano Grudzień 2, 2006 Sprawa rozwiązana zrobiłem to na wektorach - czyli pierwszy wektor typu int, a kolejny to wektor wskaźników na wektory typu int, kolejny wymiar to znowu wskaźniki na wektory itd... Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Grudzień 3, 2006 Zgłoś Share Napisano Grudzień 3, 2006 chyba mylisz pojecia, wektor to co innego niz tablica pointerow.twoje rzeczy mozna zrobic tak (przyklad dla 2 wymiarow) [code=C++] int **tab; tab = new int*[10]; //albo new *int[10] , X[HX[HY]ZHYHXZ[L L ĘĘB%EćWrEłUÓ [/code]im wiecej wymiarow tym wiecej * dorzucasz i dorzucasz kolejne petle.... Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
marek_haj Napisano Grudzień 4, 2006 Zgłoś Share Napisano Grudzień 4, 2006 Deja Vu ? http://cpw.net.pl/forum/viewtopic.php?t=4341 Link do komentarza Udostępnij na innych stronach More sharing options...
Wosiedem Napisano Grudzień 4, 2006 Zgłoś Share Napisano Grudzień 4, 2006 [quote] Deja Vu ? http://cpw.net.pl/forum/viewtopic.php?t=4341[/url] [/quote]A czy to źle? Pozdrawiam, vo7 (; Link do komentarza Udostępnij na innych stronach More sharing options...
marek_haj Napisano Grudzień 5, 2006 Zgłoś Share Napisano Grudzień 5, 2006 zle nie zle tylko po chorobe umieszczac ten sam temat na 1 forach ... Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.