Hei,
Minulla on koodaus, jossa pääohjelmassa kysytään, kuinka monta kertaa käyttäjä haluaa täyttää tiedot x. Tulostus tapahtuu aliohjelmassa, jossa sitten loopin kanssa ilmenee ongelma:
Pääohjelmassa syötetty lukumäärä "x" ei toimi aliohjelman loopissa, eli se on määrittelemätön. Kuinka tuo pääohjelman "x" saadaan huomioitua aliohjelman loopissa?
En nyt jaksanut laittaa tähän koko koodia kun olisi aika sekavaa luettavaa. Toivottavasti joku ymmärsi mikä ongelmani on. :)
/* Main */ cout << "Kuina monta tietoa y haluat söyttää (max. 20)?: "; cin >> luku; for (int nro = 0; nro < luku; nro++) { cout << "Anna tieto y: "; cin >> tiedot.y; } tulostus(tiedot); return 0; } /* Aliohjelma */ int tulostus(Kysytyt tiedot) for (int nro = 0; nro < luku; nro++) { cout << endl << "Tieto y: " << tiedot.y << endl; } return 0;
Eli täällä aliohjelmassa tuo "luku" herjaa määrittelemätöntä, mutta kun se määritellään pääohjelmassa, niin kuinka saan tuon yhteyden?
No aliohjelmalle saat välitettyä tietoa antamalla sen parametriksi.
Nythän koko ohjelmassa oi ole oikein mitään toimivaa. Luet monta kertaa käyttäjän syötteen samaan muuttujaan. Ilmeisesti jossain näkymättömissä esitellään main-funktion tiedot -muuttuja sekä Kysytyt luokka.
Tämä varmasti näyttää kaikin puolin toimimattomalta, kun koodi on niin pitkä kokonaisuus etten koko roskaa viitsi tänne laittaa. Mutta aloittelija olen, että voi tässä muutakin vikaa olla.
Mutta siis, jos määrittelen parametrin aliohjelmaan, niin kuinka saan sille saman arvon jonka käyttäjä syötti pääohjelmassa?
No ihan periaatteessa pääohjelmassa
tulostus(tiedot, luku);
Ja aliohjelman esittely
int tulostus(Kysytyt tiedot, int kpl)
Jolloin aliohjelman kpl -muuttujaan tulee sama luku kuin mikä oli pääohjelman luku -muuttujassa. (Toki nimi voi olla myös luku, mutta laitoin nyt eri havainnollistaakseni että sen ei tarvitse olla saman niminen)
Kiitos, tällä sain toimimaan!
Aihe on jo aika vanha, joten et voi enää vastata siihen.