Berechnung der Fläche und Umfang zweier Kreise und berechnen der Oberflache und Volumen zweier Kugeln wobei nur gerundete werte rauskommen und ich brauche , Werte.
-
Hi Pascal mein Name ich versuche ein Programm zu schreiben welches von 2 kreisradien die Fläche und den Umpfang und von 2 Kugelradien die Oberfläche und Volumen berrechnet. Bekomme nur ganze Zahlen raus brauche die ergebnisse aber als ungerundet.
//
#include <iostream>
#include <cmath>
using namespace std;int main()
{
int a1, a2; //Kreis
int b1, b2; //Kugel
int sum1, sum2; //Fläche 1&2
int sum3, sum4; //Umfang 1&2
int sum5, sum6; //Oberfläche 1&2
int sum7, sum8; //Volumen 1&2
int pi;
cout << "Bitte geben Sie den Radius des ersten Kreises ein:";
cin >> a1;
cout << "Bitte geben Sie den Radius des zweiten Kreises ein:";
cin >> a2;
cout << "Bitte geben Sie den Radius der ersten Kugel ein:";
cin >> b1;
cout << "Bitte geben Sie den Radius der zweiten Kugel ein:";
cin >> b2;pi = 3.14159265358979323846; sum1 = pi * (pow(a1, 2)); sum2 = pi * (pow(a2, 2)); sum3 = 2 * pi * a1; sum4 = 2 * pi * a2; sum5 = pi * 4 * (pow(b1, 2)); sum6 = pi * 4 * (pow(b2, 2)); sum7 = (4 / 3) * pi * (pow(b1, 3)); sum8 = (4 / 3) * pi * (pow(b2, 3)); cout << "Die Flaeche des 1. Kreises betraegt : " << sum1 << endl; cout << "Die Flaeche des 2. Kreises betraegt : " << sum2 << endl; cout << "Der Umfang des 1. Kreises betraegt : " << sum3 << endl; cout << "Der Umfang des 2. Kreises betraegt : " << sum4 << endl; cout << "Die Oberflaeche der 1. Kugel betraegt : " << sum5 << endl; cout << "Die Oberflaeche der 2. Kugel betraegt : " << sum6 << endl; cout << "Das Volumen der 1. Kugel betraegt : " << sum7 << endl; cout << "Das Volumen der 2. Kugel betraegt : " << sum8 << endl; if (a1 > a2) cout << "Kreis1 ist der groessere Kreis" << endl; else cout << "Kreis2 ist der groessere Kreis" << endl; if (b1 > b2) cout << "Kugel1 ist die groessere Kugel." << endl; else cout << "Kugel1 ist die groessere Kugel." << endl; return 0;
}
-
Das liegt an dem von dir verwendeten Datentyp
int
. Du möchtest eine Fließkommazahl, schau dir daher mal den Rückgabetyp von pow an.
s.a. Fundamental types
-
Du benutzt
int
als Datentyp. Int kennt nur ganze Zahlen. Kennst du vielleicht auch noch einen anderen Datentyp?Ansonsten noch der generelle Hinweis, dass du die Initialisierung, wenn möglich, direkt zusammen mit der Variablendefinition machen solltest.
Also nicht:int pi; // anderer Code (oder auch nichts) // in diesem Bereich ist pi undefiniert - du darfst hier nicht lesend auf pi zugreifen // pi klingt aber nach einem festen Wert - das ist fehleranfällig! pi = irgendwas;
sondern:
int pi = 3.141;
Allerdings ist hier, wie gesagt,
int
nicht der korrekte Typ, dennint
kennt nur ganze Zahlen. Außerdem könntest du pi alsconst
deklarieren.
-
Vielen dank für die Antwotren hat mir sehr weitergeholfen
-
@Pascal Und schau dir auch mal dein sum7 an:
sum7 = (4 / 3) * pi * (pow(b1, 3));
(4 / 3)
dividiert die Ganzzahl 4 durch die Ganzzahl 3. Es kommt eine Ganzzahl heraus, nämlich 1. Bei dir soll aber vermutlich nicht 1, sondern 1.333... herauskommen. Dazu muss mindestens eine der Zahlen bereits eine Fließkommazahl sein. Also statt(4 / 3)
schreibst du(4.0 / 3)
oder(4 / 3.0)
oder(4.0 / 3.0)
oder gar(4. / 3)
(d.h. der Punkt allein reicht schon aus).
-
Oder
4 * pi / 3
....