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;
}
Palautus parametrien kautta?
6
638
Vastaukset 6
- 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
Riikka Purra on mukana Suomen huutokauppakeisari -sarjassa
Suomen huutokauppakeisari on tavallisten suomalaisten ohjelma. Sarjan suosiosta kertoo se, että nyt alkaa jo 19. kausi t1961797Kuuleppas
ensimmäiset naissuhteet toimii miehelle eräänlaisena oppikouluna, mutta hän ei välttämättä itse ymmärrä oppineensa mitää2651216Gallup: Kansalaiset eivät usko velkajarruun
Puolet suomalaisista ei usko velkajarrun vaatimien sopeutusten toteutuvan, kertoo Iro Researchin kyselytutkimus. Kokoom66943Mulla ei ole Suomessa enää mitään
4 vuotta joutuu asumaan henkisessä vankilassa. Sitten voi muuttaa takaisin ulkomaille.181906Provider miehistä..
Tietyt miehet puhuvat ilkeästi naisista, jotka haluavat elää miehen tuloilla. Eikö? Mutta miksi tietyt miehet siitä pah251793- 61788
- 46777
Sinulle nainen
En ehkä koskaan osannut sanoa tätä oikein. Minun vaikeuteni luottaa liittyi ennen kaikkea menettämisen pelkoon. Siihen64758- 48749
- 93732
- 156686
- 42666
Yt:t kunnassa päättyi
Oliko nämä tarpeelliset ja ratkeaako taloushuolet näiden avulla? Lehdessä ilmoitettujen lukujen perusteella lisää on tul75664Ethän voinut nainen tietää, että rikot rikotun
Omaa elämää taas mietin aamuyön tunteina. En vieläkään löytänyt muistin sokkeloista ainuttakaan onnen hetkeä. Kaipuu on71636Hei rakkaani.
Kohtaaminen lähestyy. Miten teemme sen? Kumpi ottaa yhteyttä vai törmäämmekö jossain sattumalta? Tuleva vaimosi50623Martsusta tuli leuhka
Ja ylimielinen. Hän ei nosta persettäkään ilmaseksi . Luulempa et nämä ei tee hyvää hyvinvointivalmennuksille.... Nannal197622Tulisitpa käymään joskus vielä
Olisi niin kiva nähdä pitkästä aikaa. Oletko vielä joskus tulossa?... Niin monet muutoksen tuulet puhaltavat, olisi lohd24586- 31578
Kuisla Group Oy jättänyt yrityssaneeraushakemuksen
Samalla yrityssaneeraukseen on hakeutunut Kuisla henkilökohtaisesti ja Seinäjoen Motelli Oy, joka omistaa Sorsanpesän ki25539Kiulu myynnissä!
Kiulu hakee taas uutta yrittäjää. https://www.yritysporssi.fi/etela-pohjanmaa-lansi-suomi-finland/myytavat/yritykset/ma26538