Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Pienin ja suurin luku

kermiitti [17.10.2007 23:02:35]

#

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;
}

Resiina [17.10.2007 23:14:35]

#

Poista noiden if-vertailujen jälkeen olevat puolipisteet(;).
esim.
if(kolmas > eka || kolmas > toka);
->
if(kolmas > eka || kolmas > toka)

Antti Laaksonen [18.10.2007 07:33:33]

#

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.

kermiitti [18.10.2007 20:52:34]

#

Kiitos neuvoista. Unohtui sanoa että väsään c++ kielistä ohjelmaa. En siis osaa kayttaa tuota jalkimmaista esimerkkia.

Blaze [18.10.2007 20:58:41]

#

printf("%i\n", pienin(1, 2, 3)); == std::cout << pienin(1, 2, 3) << std::endl;

Nyt osaat.

Vastaus

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

Tietoa sivustosta