Moro eli pitäisi tehdä tehtävä jossa kysytään 4 lukua joista pitäisi tulostaa min ja max sekä keskiarvo. Onko C-kielessä funktiota millä saisi noi min ja max? Vai pitääkö if-lauseella alkaa tekemään tota? Kiitoksia vastanneille
Miksi siihen pitäisi olla valmis funktio, kun omankin tekee hetkessä?
int min(int a, int b) { if (a < b) { return a; } return b; } int pienin = min(min(min(a, b), c), d);
Keskiarvo ei onnistu ihan näin, mutta se nyt on auki kirjoitettunakin aika helppo, (a + b + c + d) / 4.0.
Jos luvut ovat taulukossa, kaikki on tietysti helpompaa for-silmukoilla.
Jokainen noista vie n. neljä riviä tai jos kaikki tekee samaan silmukkaan niin pääsee vielä vähän vähemmillä riveillä.
Sami: Mitä merkitystä on rivien määrällä? Voihan Metabolixin ratkaisun kirjoittaa yhdelle riville jos siltä tuntuu — lopputulosta tai suoritetun ohjelman nopeutta se ei kuitenkaan muuta suuntaan eikä toiseen.
Pienin ja suurin neljällä vertailulla ja 2-4 sijoituksella:
int main(void) { int pienin, suurin, a, b, c, d; /* hae a, b, c, d */ if (a < b) { pienin = a; suurin = b; } else { pienin = b; suurin = a; } if (c < d) { if (c < pienin) { pienin = c; } if (d > suurin) { suurin = d; } } else { if (c > suurin) { suurin = c; } if (d < pienin) { pienin = d; } } /* tulosta vastaukset */ return 0; }
Schedler kirjoitti:
Sami: Mitä merkitystä on rivien määrällä? Voihan Metabolixin ratkaisun kirjoittaa yhdelle riville jos siltä tuntuu — lopputulosta tai suoritetun ohjelman nopeutta se ei kuitenkaan muuta suuntaan eikä toiseen.
Lähinnä sitä, että näiden toteuttaminen on erittäin yksinkertaista tehdä itsekin, vaikkei valmista funktiota olisikaan.
Toisaalta on myös selvää että kyseessä on hyvin aloitteleva ohjelmoija, eikä välttämättä ollut tutustunut funktioiden syntaksiin. Tämä tehtävä olisi huomattavasti rasittavampi kirjoittaa ilman funktioita, ja tässähän kysymyksen oleellinen osa olikin, että voiko monotonista if-lauseiden kirjoittelua välttää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.