Tilanne on tämä: Kaksiulotteiseen taulukkoon tallennetaan tietoja eli tieto1, tieto2, tieto3. Tiedot ovat int-tyyppisiä. Taulukon kokoa (rivimäärää) ei kuitenkaan tunneta entuudestaan. Miten tällaisen taulukon sais väsättyä vai onnistuuko se edes?? Jos ei, niin pystyykö tämän kiertämään jollakin keinolla?
Toinenki ongelma löytyy: Tieto3 voi olla väliltä 0-5. Tieto1 (0 tai1) ollessa esim. 0 pitäisi laskea vastaava tieto3 summaan jne. Miten tämä tehdään?
Jos homma ei onnistu ihan tällä tavalla niin olisiko jotain muuta tapaa tehdä sama asia?
Kiitoksia kaikista mahdollisista neuvoista.
Käytä linkitettyä listaa, sitä on helppo laajentaa :)
Taulukolla onnistuu varmaan helpoiten näin:
Tee taulukon alkiosta oma struct, jolloin taulukko on oikeastaan yksiulotteinen. Jos sen pitää venyä toiseenkin suuntaan, pitää tietenkin käyttää 2D-taulua. Joka tapauksessa, teet fuinktiot, joilla varaat lisää tilaa, ja niitä voit sitten kutsua aina, kun tarvitset lisää tilaa.
Tutustu funktioihin malloc, free ja realloc. <stdlib.h>
typedef struct _TTaulukonKohta { int tieto1, tieto2, tieto3; } TTaulukonKohta; // Jos käyttäisit 2D-taulukkoa, voisit määritellä tähän // typedef int * TTaulukonKohta; TTaulukonKohta *Taulu = 0; // Taulukko on osoitin. int Taulukon_Koko = 0; void LaajennaTaulua() { // Merkitään alkioiden määrä suuremmaksi ja varataan lisää tilaa Taulukon_Koko++; Taulu = realloc(Taulu, Taulukon_Koko * sizeof(TTaulukonKohta)); // Taulukossa on nyt Taulukon_Koko alkiota, [0 .. (Taulukon_Koko - 1)] // 2D-taulukon tapauksessa uudelle riville pitäisi nyt varata tilaa. } void TuhoaTaulukko() { // Vapautetaan koko taulukko kerralla free(Taulu); }
Aihe on jo aika vanha, joten et voi enää vastata siihen.