Kezdőoldal » Számítástechnika » Programozás » Hogyan tudnám C++-ban az...

Hogyan tudnám C++-ban az alábbi függvényre kapott double értékeket szebb formában kiíratni?

Figyelt kérdés

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.



2012. szept. 6. 17:13
 1/8 A kérdező kommentje:

É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.

2012. szept. 6. 17:25
 2/8 anonim ***** válasza:
A printf függvényt és formázó kódokat használd!
2012. szept. 6. 17:28
Hasznos számodra ez a válasz?
 3/8 anonim ***** válasza:
100%

"

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.

2012. szept. 6. 22:52
Hasznos számodra ez a válasz?
 4/8 anonim ***** válasza:
A printf valóban jó megoldás, de tudtommal a cout << operátora alapból formázza a számokat. Annak hogy ilyen ronda az eredmény valóban a paraméterátadás az oka.
2012. szept. 7. 17:53
Hasznos számodra ez a válasz?
 5/8 A kérdező kommentje:
Tényleg eléggé hülye voltam :S Megírtam eljárások nélkül és így kifogástalanul működik.
2012. szept. 8. 10:13
 6/8 anonim ***** válasza:

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;

}

2012. szept. 8. 11:32
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:
Köszönöm a felvilágosítást, így már értem. Valahogy csak meg fogom ezt tanulni.
2012. szept. 10. 18:27
 8/8 anonim ***** válasza:
Szívesen.
2012. szept. 10. 20:41
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!