Palautus parametrien kautta?

Parametreittäin

Olen kirjoittamassa ohjelmaa, jolla harjoittelen arvojen palauttamista parametrien kautta. Pääohjelman pitäisi kysyä kaksi lukua ja palauttaa arvo parametrin kautta. Alla on tekemääni ohjelmaa.

Pulmana siis ei ole itse arvon palautus, koska sen osaan palauttaa myös return-lauseella. Pulmana on, että miten minun pitäisi määritellä tuo pääohjelman summamuuttuja ja viiteparametri, jotta saan arvon palautettua juuri parametrin kautta pääohjelmaan. Onko tuo alla edes sinne päin?


#include

void palauta(float x, float y, float *sump);

void
main(void)
{
   float luku1,
       luku2,
       summa;

   printf("\nAnna luku 1 > ");
   scanf("%f", luku1);

   printf("\nAnna luku 2 > ");
   scanf("%f", luku2);

   palauta_summa(luku1, luku2, & summa);

   printf("\nSumma on %.2f ", summa);


}

void palauta(float x,float y, float *sump)
{
   float sum;

   sum = x y;
   *sump = & sum;

}

6

637

    Vastaukset 6

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • teuro

      pääohjelmassa kutsut muun muassa anna_summa funktiota, jota ei ole määritelty. Summaa ei anneta parametrina tämän olet ymmärtänyt jotenkin väärin.

      mielummin vaikka näin:

      float anna_summa(float x, float y){
      return (x y);
      }

      • referoija

        Tietysti summan (muuttujan) voi antaa parametrina (referenssinä) jos haluaa.

        Alkuperäisessä oli se &-merkki turha, eli ilman sitä:

        *sump = sum;

        Ja edelliselle "neuvojalle" kysymys, että mitenkäs palautat useamman arvon return lauseella?

        Yksi hyvin yleinen tapa käyttää tätä on palauttaa TRUE/FALSE return lauseella ja vastaus kirjoittamalla referenssinä annettuun muuttujaan, esim:

        int etsi_summa( int kriteeri, int * summa )
        {
        // etsi jotenkin...
        if (osuma < MAX_SUMMAT)
        {
        *summa = summat[osuma];
        return TRUE;
        }

        return FALSE;
        }

        Ja sitä kutsutaan tietysti koodissa näin:

        if (etsi_summa(tunnus, &summa))
        {
        // käytä summaa
        }
        else
        {
        // summaa ei löytynyt
        }


      • helppoa
        referoija kirjoitti:

        Tietysti summan (muuttujan) voi antaa parametrina (referenssinä) jos haluaa.

        Alkuperäisessä oli se &-merkki turha, eli ilman sitä:

        *sump = sum;

        Ja edelliselle "neuvojalle" kysymys, että mitenkäs palautat useamman arvon return lauseella?

        Yksi hyvin yleinen tapa käyttää tätä on palauttaa TRUE/FALSE return lauseella ja vastaus kirjoittamalla referenssinä annettuun muuttujaan, esim:

        int etsi_summa( int kriteeri, int * summa )
        {
        // etsi jotenkin...
        if (osuma < MAX_SUMMAT)
        {
        *summa = summat[osuma];
        return TRUE;
        }

        return FALSE;
        }

        Ja sitä kutsutaan tietysti koodissa näin:

        if (etsi_summa(tunnus, &summa))
        {
        // käytä summaa
        }
        else
        {
        // summaa ei löytynyt
        }

        palautat returnilla pointterin jättimäiseen tai minimaaliseen taulukkoon, jossa on summia ja epäsummia ja mitä vaan kummia laskentatulosteita samassa formaatissa. Vielä helpompaa on palauttaa koko taulukko, mutta sitäkin ennen pitää muistaa varata muistia tulosteet plus yksi paikka nullille, koska muuten tulee runtime-erroreita, vaikka kääntäjä kehuukin, että sulla on periaatteessa ihan hyvät koodit siinä niin.


      • Käsittämättömän helppoa
        helppoa kirjoitti:

        palautat returnilla pointterin jättimäiseen tai minimaaliseen taulukkoon, jossa on summia ja epäsummia ja mitä vaan kummia laskentatulosteita samassa formaatissa. Vielä helpompaa on palauttaa koko taulukko, mutta sitäkin ennen pitää muistaa varata muistia tulosteet plus yksi paikka nullille, koska muuten tulee runtime-erroreita, vaikka kääntäjä kehuukin, että sulla on periaatteessa ihan hyvät koodit siinä niin.

        on palauttaa rakenne eli struktuuri, jossa epäsummia ja summia esittävien liukulukujen lisäksi on pikanttina detaljina eli yksityiskohtana suvun valokuva-albumista mummia esittäviä kuvia, että ne näkee ne.


      • Aika helppoa
        Käsittämättömän helppoa kirjoitti:

        on palauttaa rakenne eli struktuuri, jossa epäsummia ja summia esittävien liukulukujen lisäksi on pikanttina detaljina eli yksityiskohtana suvun valokuva-albumista mummia esittäviä kuvia, että ne näkee ne.

        funktiosta palauttaa vaikka kuinka kummallisen luokan ilmentymän, että siinähän voi tollai tähtitissilläkin pyöritellä vaikka Ensikopeloija-Britannikaa ja Vikipetiaa ihan kokonaisuudessaan, jos ne kerran kuuluu siihen tosi kummallisen luokan määrittelyyn, jos vaan muistikammat ja kovalevyjen heittovapit piisaa. No ei siinä nyt tietysti kokoaikaa tähtitissillä tartte, kun sehän onkin vähän parametrimäistä, mutta jos sä palautatkin tähtitissin sieltä funktiosta, etkä sitä parametrattua Ensikopeloija-Britannikaa ja Vikipetiaa, niin sehän on käytännössä melkein muuta kuin parametrin palauttelua. Mutta, jos sä esmes määritteletkin tosi hyvii frendei, niin sitten sä voit yhdellä returnilla palauttaa parametreistä viisveisailematta mitä vaan siitä funktiosta.


    • läksipää

      #include

      void palauta(float x, float y, float *sump);

      int
      main(void)
      {
      float luku1,
      luku2,
      summa;

      printf("\nAnna luku 1 > ");
      scanf("%f", &luku1);

      printf("\nAnna luku 2 > ");
      scanf("%f", &luku2);

      palauta(luku1, luku2, &summa);

      printf("\nSumma on %.2f ", summa);

      return 0;
      }

      Tuossa korjauksia (olipa monta) - kokeile nyt toteuttaa palauta-aliohjelma.

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Metsamanin muru kissa kuollut

      Nyt siellä surraan muru kissaa päivä tolkulla,vaikka muuten ei oo välittänyt mitenkään siitä,kun joka videolla vaan mars
      Tuusniemi
      174
      2901
    2. Ketä haluaisit suudella?

      🤣
      Ikävä
      86
      1260
    3. Kysymys

      Pystyisitkö tutustuu kaverina tai alkaa parisuhteeseen skitsofreenikon kanssa? T.Skitosoaffektiivinen (parantunut) Ois
      Sinkut
      242
      1077
    4. Mitä haluaisit kysyä

      kaivatultasi juuri nyt?
      Ikävä
      121
      1016
    5. Tapailtaisko nainen

      Meidän kotien puolessavälissä suunnilleen, vähä niinku salaa. Siinä on yks kiva paikka joka sopis hyvin. Mieheltä
      Ikävä
      84
      926
    6. Olisitko valmis lähitulevaisuudessa

      Kohtaamaan minut mies?
      Ikävä
      90
      752
    7. Kissan kuolema

      https://youtube.com/shorts/lJznLVfBTxA?si=h-F1D4Arg4uGjGX- On tuo aivan uskomaton tapaus! Lähes 200 osanottoa ja surun
      Tuusniemi
      104
      667
    8. Haluatko J-mies jutella asiat selviksi vai jäädä palstalle haaveilemaan

      Kuten otsikko sanoo: Haluatko tavata ja jutella, jotta saadaan asioihin selvyys lopullisesti vai haluatko mieluummin haa
      Ikävä
      55
      665
    9. Miten on, luotathan siihen?

      Että vielä tehdään kiihkeästi sitä yhdessä... Tutulle naiselle.❤️‍🔥
      Ikävä
      38
      572
    10. Naiset ymmärtävät ettei talous lähde nousuun

      Miten paljon järjellisempi olento nainen onkaan kuin tilastollisestikin paremmin tienaava mies. Kun kaikkialla puskuroid
      Maailman menoa
      102
      571
    Aihe