Miksi taulukkoon tulee alkioita, joita en ole sinne sijoittanut?
Luon 2-ulotteisen taulukon:
int taulukko1 [10][3];
Luon random-funktiolla satunnaislukuja, jotka sijoitan taulukon yhdelle "riville":
randomize(); t=1+random(6); u=1+random(28); v=1+random(29); z=(1+random(35-t)); taulukko1[3][0]=t;//tämä arvo sijoittuu myös edelliselle riville, kohtaan [2][3] taulukko1[3][1]=u; taulukko1[3][2]=v; taulukko1[3][3]=z;//tämä arvo menee myös seuravalle riville kohtaan [4][0] sekä viimeiselle riville, kohtaan [9][3]
Kääk!?
luot 10 kertaa 3 kokoisen taulukon, mutta yrität viitata neljänteen alkioon(taulukko1[3][3], alkiot alkavat nollasta)
muuta en nyt osaa sanoa :|
Tämä johtuu siitä, että vaikka kyseessä on kaksiulotteinen taulukko, varataan sille muistia yleensä yhdessä yhtenäisessä palassa tyyliin
|0,0|0,1|0,2|1,0|1,1|1,2|2,0|...|9,2|
Sopii muistaa, että jos taulukossa on tilaa kolmelle alkiolle, on suurin sallittu indeksi 2. Taulukkoviittausta [2][3] ei siis ole loogisesti olemassa, mutta sen arvoksi lasketaan osoite, joka on sama kuin [3][0] (eli [2][2]:sta seuraava osoite). [3][3] alkion kanssa on samoin eli siitä tulee oikeasti [4][0].
[9][3] on hieman erilainen tapaus, koska se on oikeasti taulukon ulkopuolella ja tässä tapauksessa (funktion sisällä määriteltynä) sen arvoksi taitaa tulla taulukon jälkeen seuraavaksi esitellyn muuttujan arvo. Se voi olla myös jotain aivan muuta riippuen laitteen arkkitehtuurista.
Kiitos, huomasin missä tein virheen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.