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
639
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
Olen nainen pahoillani, että tykkään sinusta niin paljon, että
Haluaisin panna sua. Tuntuu vaan siltä, että olet sen suhteen ihan haluton. Ei minulle riitä pelkkä ystävyyssuhde.881303Puukotus Kajaanissa
Kuka puukotti ja ketä? https://yle.fi/a/74-20247765 Vähemmän yllättäen päihteet mainittu33852- 13797
Mieti oikeasti
Ollaan lähes tuntemattomia, mutta samalla on tämä erityinen vuosien tilanne takana, joka on ollut monella tapaa väärin.38776- 90705
Pahin tapa satuttaa toista
On jättää toinen vaille mitään vastausta. Erityisen kipeää se tekee sillon jos toinen ghostaa.80696- 46688
kene ajoi "kolarin"?
"Punkaharjulla Luston ja Tuppuranmäen välillä sattui tiistaina aamupäivällä liikenneonnettomuus. Poliisin mukaan Savonl17687- 58638
Minulla on joskus ikävä sinua ja ajattelen sinua joskus.. edelleen
Olin joskus niin rakastunut sinuun. Olin onnellinen, että kohdattiin ja kun vain tiesin sinun olevan olemassa. Täytit aj27637- 65610
Alkaa jotenkin nyt kuvio hahmottuu täällä
Sellainen vaikutelma tästä alkaa tulla, että täällä on joku pieni porukka, joka tuntee toisensa tai ainakin pelaa samaan85595- 41581
Nainen, tässä olen kahden vaiheilla
Toinen pitäisi valita ja kummassakin on hyvät ja huonot puolensa. Toinen olisi sellainen pysyvä mutta työläs. Toinen taa56565Jos kaivattusi on
Varattu niin miksi et antaisi asian olla hänen suhteen. Miksi ylipäätään vielä jatkat?47556Hyvä on sitten, jos et sitä s*ksiä halua kanssani.
Rakastetaan vaan toisiamme, voin käydä muualla tyydyttämässä fyysisenpuolen tarpeet. Puhumalla tämäkin olisi selvinnyt.129537- 43534
Kylän tielle remonttia?
Mitäköhän kylän tielle ruvetaan tekemään ku laitettu tuommoset töpsät muutamien suojateitten kohille?13512- 9505
Suloinen ja herkkä
Toiset huomioiva, räväkkä, yllättävä. Ei sellaisesta voi olla pitämättä.31495