Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Osoittimen palauttaminen funktiosta

KimmoK [04.01.2007 18:59:37]

#

Tällainen C-tehtävä olis järkeilyn aiheena:

Tehtävänäsi on laatia aliohjelma, joka ottaa vastaan osoittimen kokonaislukutaulukon ensimmäiseen alkioon ja kokonaislukumuuttujan. Argumentit välitetään aliohjelmalle edellä mainitussa järjestyksessä. Argumenttina välitettävä kokonaislukumuuttuja sisältää taulukon alkioiden määrän, kun taas itse taulukko sisältää edellisen määrittelemän määrän kokonaislukuja.

Aliohjelman tulee käydä taulukko läpi ja palauttaa sitä kutsuvalle ohjelmalle pienimmän arvon sisältämän alkion osoite. Saatuaan ko. osoitteen, pääohjelma tulostaa tämän perusteella taulukon sisältämän pienimmän luvun.

Aliohjelman prototyyppi on seuraava:

int *pienimman_arvon_osoite(int *luvut, int koko);

Edellisessä *-operaattori ilmaisee funktion palautusarvon olevan osoitin.

Esimerkkitulostus
Taulukon pienin luku on: 3

Tällaista koodia olen saanut aikaseksi, mutta jokin mättää. Olenko oikeilla jäljillä edes? Tehtävänanto ei täysin aukene.

int *pienimman_arvon_osoite(int *luvut, int koko)
{
int i;
int *pienimman_osoite;
int pienin;

pienimman_osoite = luvut;
pienin = luvut[0];

for(i=0; i);
{
if(luvut < pienin)
{
pienin = luvut;
pienimman_osoite = &luvut;
}
}
return pienimman_osoite;
}

Antti Laaksonen [04.01.2007 19:18:32]

#

Ohjelmasi on melkein valmis, for-silmukassa on vain muutamia vikoja. Silmukan alussa kuuluu ilmoittaa, mitkä luvut käydään läpi. Esim. (i = 0; i < 10; i++) käy läpi luvut 0 - 9. Tässä tapauksessa pitää käydä taulukon kaikki indeksit läpi. Lisäksi for-lauseen perään ei kuulu puolipistettä. Kun viittaat silmukan sisällä tiettyyn taulukon lukuun, muista merkitä sen indeksi. Siis ei pelkkä luvut vaan luvut[i]. Näillä muutoksilla ohjelmasi pitäisi toimia.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta