Zum Inhalt springen

Ohmsches Gesetz C++ [Problem]


Empfohlene Beiträge

Geschrieben

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 :D

Danke im Vorraus

Gruß

Geschrieben

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.

Geschrieben

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

Geschrieben

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; 

}

Geschrieben
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

Geschrieben

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?

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...