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
565
Vastaukset
- 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
- 2024238
SDP haluaa 40 000 nettomaahanmuuttajaa
SDP:n Suunnanmuutos-vaihtoehtobudjetissa, käy ilmi, että demarit itse asiassa vaativat räjähdysmäistä ”työperäisen” maah1463788Orpo: Velkajarrua vastustavaa puoluetta vaikea ajatella hallitukseen
No Minja Koskelan kommunistipuolue jäi ulos tuosta. Kaikki eduskuntapuolueet vasemmistoliittoa lukuun ottamatta sopivat1363245Hienoa! Eduskunta luopui käteisen käytöstä
Nyt tuo sama muutos pitää saada myös muuhun yhteiskuntaan. Käteistähän ei tarvitse tänä päivänä enää kuin rikolliset.441611Ikävä sinua mies
Vuosia kuluu, mutta tunteet ei ole hävinnyt. Tasoittuneet toki, kun ei olla nähty. Järki palannut päähän kuitenkin. Se i191478Mikä tämä henkilö mahtaa touhuta Parkanossa
Kamalaa https://www.ylasatakunta.fi/teksti/pirkanmaan-karajaoikeus-vangitsi-koiran-tappamisesta-epaillyn-6.68.127794.b58341430Sulla on avaimet ja keinot
Jos haluat jatkaa tutustumista. Itse olen niin jäässä etten pysty tekemään enää mitään. Pidempi keppi johon on helpompi251385Orpo loukkaantui fasismiin viittaavasta sanavalinnasta
Mutta miksi loukkaantui? Orpohan on tehnyt yhteistyötä fasistien kanssa jo vuonna 2019, siis jo neljä vuotta ennen loukk271351Kiinnostaa - ei kiinnosta - kiinnostaapas
Selittäkää hämmentyneelle miksi miehiä ei ikinä kiinnosta silloin, kun sitä olisi itsekin kiinnostunut? Sitten kun siirt1161150Martina haluaa Marbellaan
Martinan tekisi mieli ottaa lennot Marbellaan, jossa näkisisi kauniita ja hyväntuulisia ihmisiä. No sitten pitää matkust2151063