C++ Kreis

Neue Frage »

Auf diesen Beitrag antworten »
HAllo12 C++ Kreis

Meine Frage:
Hallo ich komme gerade bei einer Aufgabe nicht weiter:

Entwickeln Sie ein kleines Programm, das den Radius eines Kreises einliest und dann die
Kreisfläche und Kreisumfang berechnet. Abschließend sollen alle berechneten Größen auf dem
Bildschirm ausgegeben werden.
Definieren Sie dabei für die Kreiszahl eine Konstante PI mit dem Wert 3,14159.



Meine Ideen:
#include <iostream>

using namespace std;

int main()
{
double Pi;

int radius;

int Fläche;

cout << "Geben sie den radius ein !" << endl;

cin >> radius;

Pi = 3,12;



Fläche = Pi*radius ;


cout << Fläche <<endl;







}

Kann mir jemand sagen warum das progr. nicht funktioniert?
 
Auf diesen Beitrag antworten »
Airblader

Da sind einige Dinge nicht so ganz in Ordnung. Allen voran der vermutlich eigentliche Grund, warum das Programm nicht kompiliert: Dezimalzahlen werden mit einem Punkt als Dezimalzeichen eingegeben, nicht mit einem Komma. Mit was arbeitest du denn? Einen solchen Fehler sollte dir jede IDE anzeigen, eigentlich sollte sie dir das Kompilieren erst gar nicht erlauben.

Noch ein paar Dinge und Hinweise:

  • Die Variable für die Fläche sollte eine Fließkommazahl sein, in aller Regel wird das Ergebnis nämlich nicht ganzzahlig sein (bei ganzzahligen Radii sogar niemals). Den Radius kann man durchaus auch zur Fließkommazahl machen.

  • Die Aufgabe gibt vor, dass du die Bezeichnung PI und nicht Pi verwenden sollst. Programmiersprachen sind in aller Regel case-sensitive und Konstanten werden per Konvention fast in jeder Sprache großgeschrieben.

  • Die Aufgabe sagt auch, dass PI eine Konstante sein soll – keine Variable. Konstanten werden in C++ so definiert:
    code:
    1:
    
    #define PI 3.14159


  • Umlaute in Bezeichnern sollte man immer vermeiden ("Fläche" -> "Flaeche"). Übrigens sollte man Variablen auch entweder konsequent groß- oder kleinschreiben, aber nicht mischen ("radius" <-> "Fläche")

  • Deine Formel für die Fläche ist falsch.


Verwende außerdem bitte für Quelltexte im Forum die code-Tags, dass der Code lesbar und formatiert angezeigt wird.
Auf diesen Beitrag antworten »
Airblader

Noch etwas abseits der Programmierung: Die Anrede "Sie" wird großgeschrieben und vor dem Ausrufezeichen wird kein Leerzeichen gesetzt.
Auf diesen Beitrag antworten »
Karlito

Bei mir sind es tatsächlich die Umlaute, welche dafür sorgen, dass das Programm nicht kompiliert.

Interssanterweise, wird Pi=3,12 akzeptiert! Deswegen unbedingt drei mal hinschauen!

Weiterhin wird Radius mit großem "R" geschrieben und Pi ist 3,14 und nicht 3,12...

VG,

Karlito
 
Auf diesen Beitrag antworten »
Airblader

Zitat:
Original von Karlito
Pi ist 3,14 und nicht 3,12...


Und das, was den Mathematiker am meisten stören sollte, habe ich einfach mal glatt übersehen… ohje. großes Grinsen

Dass es mit einem Komma kompiliert finde ich merkwürdig. Das ist doch aber kein echtes C++, sondern irgendein Compiler-Feature, oder?
Auf diesen Beitrag antworten »
Airblader

Ich habe es eben mal überprüft. Er interpretiert es einfach als

code:
1:
2:
Pi = 3,
     12;


Soll heißen: Pi wird nur 3 zugewiesen, das "12;" wird als eigener (mehr oder weniger sinnvoller) Befehl aufgefasst.
Auf diesen Beitrag antworten »
HAllo12

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
 #include <iostream>
#define PI 3.14159


using namespace std;

int main()
{


    double Radius;

    double Flaeche;

    cout << "Geben sie den radius ein !" << endl;

    cin >> Radius;





     Flaeche =  PI*Radius ;


    cout << "Die Flaeche betraegt " << " " <<  Flaeche <<endl;

    double Umfang;

    cout << "Geben sie den zweiten Radius an um den Umfang zu berechnen!" << endl;

    cin >> Radius;

    Umfang = 2*PI*Radius;

    cout << "Der Umfang ist "<< " " << Umfang << endl;











}
    



Mein code sieht jetzt so aus und funktioniert . Danke leute .

Aber ich hätte noch ne frage:

Man erweitere das Programm so, dass die Eingabe der benötigten Werte automatisch neu gestartet
wird. Die Wiederholung der Eingabe, Berechnung und Ausgabe erreicht man durch eine so
genannte „while-Schleife“ mit einer entsprechenden Abbruchbedingung, z.B. durch eine Abfrage an
den Benutzer, ob er die Berechnung wiederholen möchte


Wie würde ich das hinbekommen ?

Was müsste ich da in die while Bedingung einbauen?
Auf diesen Beitrag antworten »
Karlito

Hallo,

erstmal stimmt deine Flächenformel noch nicht!

Und ansonsten, wäre die Bedingung der while-Schleife die Eingabe, dass abgebrochen werden soll. Wie die aussieht, musst du dir selbst überlegen. Mach mal einen Lösungsvorschlag,

VG,

Karlito
Auf diesen Beitrag antworten »
HAllo12

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
   #include <iostream>
#define PI 3.14159


using namespace std;

int main()
{

while(true){

    double Radius;

    double Flaeche;

    cout << "Geben sie den radius ein !" << endl;

    cin >> Radius;





     Flaeche =  PI*Radius *Radius;


    cout << "Die Flaeche betraegt " << " " <<  Flaeche <<endl;

    double Umfang;

    cout << "Geben sie den zweiten Radius an um den Umfang zu berechnen!" << endl;

    cin >> Radius;

    Umfang = 2*PI*Radius;

    cout << "Der Umfang ist "<< " " << Umfang << endl;






}




}
  



Wäre das Programm so in ordnung?
Auf diesen Beitrag antworten »
Karlito

Die Flächenformel stimmt jetzt. Mehr nicht.

VG,

Karlito
Auf diesen Beitrag antworten »
Hallo12

Wieso? Was ist denn sonst falsch? verwirrt
Auf diesen Beitrag antworten »
Karlito

Du hast eine Endlosschleife, die Abbruchbedingung für die while-Schleife fehlt.

VG,

Karlito
Auf diesen Beitrag antworten »
Hallo12

Ja ich weiß nicht was ich für die abbruchbedingung eingeben soll. Ich komme nicht drauf.
Auf diesen Beitrag antworten »
Karlito

Am einfachsten ist es ein "y" oder ein "n" zu lesen und je nach Eingabe zu entscheiden, ob die Schleife fortgesetzt wird. Mach dir mal Gedanken wie das gehen könnte und wie Du dann entsprechend die Schleife anpassen musst.

VG,

Karlito
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »