Favorite90 Geschrieben 18. November 2011 Geschrieben 18. November 2011 Hi Leute, habe im September meine Ausbildung zum FiSi gestartet. In der Schule haben wir leider Gottes Programmieren als Hauptfach.... Jetzt habe ich probiert etwas in C++ zu programmieren, und zwar soll mein Prog. Widerstände, Stromstaerken & Spannungen berechnen können, natürlich durch das Ohmsche Gesetz. Das Programm an sich läuft zwar, aber eben nicht so wie ich es will. #include <iostream> using namespace std; int main() { double strom, spannung, widerstand, a, b, c; cout << "(1)Stromstaerke berechnen, (2) Spannung berechnen, (3) Widerstand berechnen\n\n"; cin >> a >> b >> c; if (a==1) { cout << "Geben Sie die Spannung an:"; cin >> spannung; cout << "Geben Sie den Widerstand an:"; cin >> widerstand; cout << "Ihre Stromstaerke betraegt:" << spannung/widerstand <<" Ampere\n\n"; } else (b==2); { cout << "Geben Sie den Widerstand an:"; cin >> widerstand; cout << "Geben Sie die Stromstaerke an:"; cin >> strom; cout << "Ihre Spannung betraegt:" << widerstand*strom <<" Volt\n\n"; } if (c==3); { cout << "Geben Sie die Spannung an:"; cin >> spannung; cout << "Geben Sie die Stromstaerke an:"; cin >> strom; cout << "Ihr Widerstand betraegt:" << spannung/strom <<" Ohm\n\n"; } return 0; } Das Programm läuft jedes mal durch die ganzen Punkte, ohne dass es beendet wird, nachdem man ein Punkt anwählt. Und der dritte Punkt ist nicht anwählbar. Kann sich jemand das evtl. anschauen? Ich denke ich hab ein Fehler in der If-Schleife Danke im Vorraus Gruß Zitieren
SilentDemise Geschrieben 18. November 2011 Geschrieben 18. November 2011 ich hab zwar Jahrhunderte kein C++ gemacht, aber ersten ist deine syntax falsch, nach else wird nichts geprüft und ein Semikolon kommt da schon gar nicht hin. Zweitens schau dir mal die switch case Anweisung an. Die sollte dein Problem genau lösen. Zitieren
Favorite90 Geschrieben 18. November 2011 Autor Geschrieben 18. November 2011 Danke für die prompte Antwort. Ich habe in der Schule bis jetzt nur if & else gehabt, schwitch-case sagt mir gar nichts. Ist es ohne des nicht möglich? Ich mein das Programm läuft ja an sich, nur eben nicht so wie ich es will xD Zitieren
SilentDemise Geschrieben 18. November 2011 Geschrieben 18. November 2011 probiers mal so: #include <iostream> using namespace std; int main() { double strom, spannung, widerstand, a, b, c; cout << "(1)Stromstaerke berechnen, (2) Spannung berechnen, (3) Widerstand berechnen\n\n"; cin >> a >> b >> c; if (a==1) { cout << "Geben Sie die Spannung an:"; cin >> spannung; cout << "Geben Sie den Widerstand an:"; cin >> widerstand; cout << "Ihre Stromstaerke betraegt:" << spannung/widerstand <<" Ampere\n\n"; } else if(b==2) { cout << "Geben Sie den Widerstand an:"; cin >> widerstand; cout << "Geben Sie die Stromstaerke an:"; cin >> strom; cout << "Ihre Spannung betraegt:" << widerstand*strom <<" Volt\n\n"; } else if(c==3) { cout << "Geben Sie die Spannung an:"; cin >> spannung; cout << "Geben Sie die Stromstaerke an:"; cin >> strom; cout << "Ihr Widerstand betraegt:" << spannung/strom <<" Ohm\n\n"; } return 0; } Zitieren
flashpixx Geschrieben 18. November 2011 Geschrieben 18. November 2011 Ich habe in der Schule bis jetzt nur if & else gehabt, schwitch-case sagt mir gar nichts. Ist es ohne des nicht möglich? Control Structures - C++ Documentation Es ist ohne switch-case möglich, aber Du solltest Dir einmal die Semantik Deines Codes anschauen, also das was er tut. Ich beschreibe Dein Programm mal in Worten: erzeuge Variablen strom, spannung, widerstand, a, b, c vom Typ double gebe auf dem Standardstream folgendes aus "cout << "(1)Stromstaerke berechnen, (2) Spannung berechnen, (3) Widerstand berechnen\n\n";" lese vom Standardstream erst a, dann b, dann c ein wenn a gleich 1 ist dann gebe auf dem Standardstream aus "Geben Sie die Spannung an:" lese vom Standardstream in die Variable spannung ein gebe auf dem Standardstream aus "Geben Sie den Widerstand an:" lese vom Standardstream in die Variable widerstand ein gebe auf dem Standardstream aus "Ihre Stromstaerke betraegt:", berechne spannung durch widerstand und gebe es aus, danach gebe aus "Ampere\n\n" wenn a nicht gleich 1 ist dann b ist gleich 1 beginne neuen Block gebe auf dem Standardstream aus "Geben Sie den Widerstand an:" lese vom Standardstream in die Variable widerstand ein gebe auf dem Standardstream aus "Geben Sie die Stromstaerke an:" lese vom Standardstream in die Variable strom ein gebe auf dem Standardstream aus "Ihre Spannung betraegt:", berechne strom*widerstand und gebe es aus, danach gebe aus " Volt\n\n" neuer Block endet wenn c gleich 1 ist dann mache nichts beginne neuen Block gebe auf dem Standardstream aus "Geben Sie die Spannung an:" lese vom Standardstream in die Variable spannung ein gebe auf dem Standardstream aus "Geben Sie die Stromstaerke an:" lese vom Standardstream in die Variable strom ein gebe auf dem Standardstream aus "Ihr Widerstand betraegt:", berechne spannung durch strom und gebe es aus, danach gebe aus "Ohm\n\n" neuer Block endet Überlege Dir, ob das Programm so überhaupt sinnvoll ist. Es sind mehrere Punkte, die hier semantisch, d.h. inhaltlich keinen Sinn ergeben. Im Normalfall würde das Programm starten und fragen, was ich berechnen will, also entweder Stromstärke oder Spannung oder Widerstand, d.h. ich kann nur "eine von drei Optionen wählen". Wenn ich dann diese ausgewählt habe, dann muss das Programm prüfen, welche es ist und eben die zwei Werte von mir anfordern und das Ergebnis berechnen Zitieren
Favorite90 Geschrieben 18. November 2011 Autor Geschrieben 18. November 2011 Else if ist mir neu^^ Super! Funktioniert, danke dir Ein kleines Problem ist noch dabei, und zwar muss ich die jeweilige Zahl immer 3 mal eingeben, damit das Programm läuft. Lässt sich das irgendwie verhindern? Zitieren
SilentDemise Geschrieben 18. November 2011 Geschrieben 18. November 2011 Ja das lässt sich verhindern. Ich habe dir nur die syntaktischen Fehler rausgefischt. Schau dir mal den Post von Flashpixx an. Der sagt dir, warum das Grütze ist, was du da tust ;-) Zitieren
Favorite90 Geschrieben 18. November 2011 Autor Geschrieben 18. November 2011 Okay, danke.. Werde mir den Post von Flashpixx nachher oder morgen anschauen und nach dem Schema arbeiten Kann von mir aus geclosed werden. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.