Kuinkakohan tällainen onnistuisi ANSI-C:llä:
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.
Apua kaivataan...
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.
Apua kaivataan...
Vastaukset 2
Vanhimmat
int *pienimman_arvon_osoite(int *luvut, int koko)
{
int *pi, *pi2, i;
for(pi = luvut, pi2 = pi, i = koko ; i ; --i){
if(*pi > *pi2)
pi2 = pi;
}
return pi2;
}
int main(void)
{
int luvut[10], *pi;
pi = pienimman_arvon_osoite(luvut,sizeof(luvut)/sizeof(luvut[0]));
printf("%d",*pi);
return 0;
}
#include
int *pienimman_arvon_osoite(int *luvut, int koko)
{
int *pienin, *ip;
for (ip = luvut, pienin = luvut; koko; koko--, ++ip)
if ( *ip < *pienin)
pienin = ip;
return pienin;
}
int main(void)
{
int testi[150] = { 69, 110, 32, 111, 115, 97, 110, 110, 117, 116, 32,
105, 116, 115, 101, 46, 32, 75, 111, 112, 105, 111,
105, 110, 32, 118, 97, 115, 116, 97, 117, 107, 115,
101, 110, 32, 116, -28, -28, 108, 116, -28, 58, 32,
104, 116, 116, 112, 58, 47, 47, 107, 101, 115, 107,
117, 115, 116, 101, 108, 117, 46, 115, 117, 111,
109, 105, 50, 52, 46, 102, 105, 47, 115, 104, 111,
119, 46, 102, 99, 103, 105, 63, 99, 97, 116, 101,
103, 111, 114, 121, 61, 49, 48, 56, 38, 99, 111,
110, 102, 101, 114, 101, 110, 99, 101, 61, 52, 53,
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 52,
48, 38, 112, 111, 115, 116, 105, 110, 103, 61, 50, 50,
48, 48, 48, 48, 48, 48, 48, 50, 52, 48, 48, 51, 57,
56, 54, 10};
int i, *pienin;
/* Tulostetaan testi taulukko */
for ( i = 0; i < 150; i++)
printf("%c", testi[i]);
pienin = pienimman_arvon_osoite( testi, 150);
printf("pienin: %d\n", *pienin);
return 0;
}