Tässä tarvisin apua kokeneemmilta parin funktion kanssa joista ensimmäinen toimii jostain syystä väärin. Kun eka, toka ja kolmas saavat arvot 1, 2 ja 3 palauttaa tuo return pieni; jostain syystä arvon 3. Vaikka eikö siihen tuossa ekassa vertailussa sijoiteta arvo 1 eikä sen sen jälkeen pitäisi enää muuttua kahdessa jälkimmäisessä vertailussa. Itseasiassa molemmat palauttavat arvon 3. Tarkoitus olisi että toinen funktio palauttaisi isoimman ja toinen pienimmän arvon.
int pienin(int eka, int toka, int kolmas) { int pieni; if(eka < toka || eka < kolmas); pieni = eka; if(toka < eka || kolmas < toka); pieni = toka; if(kolmas < eka || kolmas < toka); pieni = kolmas; return pieni; } int suurin(int eka, int toka, int kolmas) { int iso; if(eka > toka || eka > kolmas); iso = eka; if(toka > eka || toka > kolmas); iso = toka; if(kolmas > eka || kolmas > toka); iso = kolmas; return iso; }
Poista noiden if-vertailujen jälkeen olevat puolipisteet(;).
esim.
if(kolmas > eka || kolmas > toka);
->
if(kolmas > eka || kolmas > toka)
Funktio taitaa muutenkin toimia hieman väärin.
Tässä on yksi tapa selvittää pienin luku:
int pienin(int eka, int toka, int kolmas) { int pieni; pieni = eka; if (toka < pieni) pieni = toka; if (kolmas < pieni) pieni = kolmas; return pieni; }
Tässä taas on testiohjelma, jolla voi tutkia funktion toimintaa:
int main(void) { printf("%i\n", pienin(1, 2, 3)); printf("%i\n", pienin(1, 3, 2)); printf("%i\n", pienin(2, 1, 3)); printf("%i\n", pienin(2, 3, 1)); printf("%i\n", pienin(3, 1, 2)); printf("%i\n", pienin(3, 2, 1)); printf("%i\n", pienin(1, 1, 3)); printf("%i\n", pienin(1, 3, 1)); printf("%i\n", pienin(3, 1, 1)); printf("%i\n", pienin(3, 3, 1)); printf("%i\n", pienin(3, 1, 3)); printf("%i\n", pienin(1, 3, 3)); printf("%i\n", pienin(1, 1, 1)); return 0; }
Jokaisesta kohdasta tuloksena pitäisi olla 1.
Kiitos neuvoista. Unohtui sanoa että väsään c++ kielistä ohjelmaa. En siis osaa kayttaa tuota jalkimmaista esimerkkia.
printf("%i\n", pienin(1, 2, 3)); == std::cout << pienin(1, 2, 3) << std::endl;
Nyt osaat.
Aihe on jo aika vanha, joten et voi enää vastata siihen.