Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: 4 luvusta min ja max

kayttaja-8011 [01.12.2009 23:55:27]

#

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

Metabolix [01.12.2009 23:57:36]

#

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.

Sami [01.12.2009 23:59:00]

#

Jokainen noista vie n. neljä riviä tai jos kaikki tekee samaan silmukkaan niin pääsee vielä vähän vähemmillä riveillä.

Schedler [02.12.2009 16:28:07]

#

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.

Chiman [02.12.2009 16:50:01]

#

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

Sami [02.12.2009 17:13:25]

#

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.

Laitinen [02.12.2009 17:19:12]

#

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ää.

Vastaus

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

Tietoa sivustosta