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?

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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