Hogyan tudnám C++-ban az alábbi függvényre kapott double értékeket szebb formában kiíratni?
Tulajdonképpen egy kör területét és kerületét számoló program. A teljes kód:
#include <iostream>
double circ(double radius, double ter, double ker)
{
double radi;
std::cout<<"Sugar=";
std::cin>>radi;
radius=radi;
ter=radius*radius*3.141;
ker=radius*2*3.141;
return ter;
return ker;
}
int main(int argc,char* argv[])
{
double rad;
double terulet;
double kerulet;
circ(rad,terulet,kerulet);
std::cout<<"Terulet="<<terulet<<std::endl;
std::cout<<"Kerulet="<<kerulet<<std::endl;
std::cin.get();
return 0;
}
A program rendesen lefordul és fut, sugárnak mondjuk megadtam 5-öt, de ilyen formában írta ki: 1.86875e-307
1.86858e-307
Ismerem ezt a formát és tudom hogyan kell értelmezni, de ezt szebb formában szeretném kiíratni. Hogyan tehetném meg?
Ja, és a másik, hogy légyszives mondjátok el, mi annak a függvénynek a neve ami megadja a pi értékét? (Már ha van ilyen C++ -ban.) Pascalban van, mégpedig nemes egyszerűséggel "pi" a neve.
Ha van egyéb véleményetek pl. arról hogy hogyan tehetném jobbá ezt a programot, azt is szívesen fogadom.
És bocs hogy a végén a cout-oknál a következő sorba kerültek a pontosvesszők, nem tudom miért.
Azt még elmondanám ha valaki kíváncsi rá, hogy C-free 5 -öt használok, C++ és C fordító is egyben.
"
A program rendesen lefordul és fut, sugárnak mondjuk megadtam 5-öt, de ilyen formában írta ki: 1.86875e-307
1.86858e-307
Ismerem ezt a formát és tudom hogyan kell értelmezni, de ezt szebb formában szeretném kiíratni."
Tudod értelmezni: 1.86858e-307 , nem mondod, te sem gondolod komolyan hogy annyi a jó eredmény.
A circ függvény nem is módosítja azokat a változókat amiket paraméterbe megkap (hanem azok másolatát).
Ez a 1.86875e-307 vad szám a változó inicializálatlan értéke éppen ami a memóriába ott maradt szemetet double-ként értelmezve ...
Hogy a paraméterbe átadott változót módosítani tudja ahhoz & operátort szokás használni.
A pi konstans a math.h-ban található M_PI nevű konstans, valójába preprocesszor direktíva.
Az is eleve egy marhaság volt hogy 2 return van, amikor (egy) return-hoz érkezik akkor ott abba hagyja a függvény a futását és visszatér ezzel az értékkel, ezt az értéket fel sem használtad sehol.
Pl: x = circ(rad,terulet,kerulet); ...
Az a másik hogy paraméterbe átadod a rad változót amit eleve értéket kellett volna beállítani e helyett függvényen belül adsz értéket a cin-ről (a másolatának).
Nem azt mondtam hogy ne használj függvényeket, a függvények használata egy szép dolog, hanem azt hogy a ter és ker paramétere a függvénynek legyen kimeneti paraméter, míg a radius maradjon bemeneti.
Pascalban is van bemeneti és kimeneti paraméter ...
Az eddigiek alapján így kellett volna megoldanod:
#include <iostream>
#include <math.h>
void circ(double radius, double &ter, double &ker)
{
ter=radius*radius*M_PI;
ker=2*radius*M_PI;
}
int main(int argc,char* argv[])
{
double rad;
double terulet;
double kerulet;
std::cout<<"Sugar=";
std::cin>>rad;
circ(rad,terulet,kerulet);
std::cout<<"Terulet="<<terulet<<std::endl;
std::cout<<"Kerulet="<<kerulet<<std::endl;
std::cin.get();
return 0;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!