Abfrage zum erneuten start des programms



  • Klingt jetzt vermutlich recht einfach aber ich komme einfach nicht auf die Lösung meines Problems.

    Zwar geht es um folgendes:

    Ein Programm, um den Bruttopreis zu berechnen, soll nach der Berechnung und der Ausgabe durch eine Abfrage neugestartet werden.

    Wie bei Zeile 78 - 81 definiert, möchte ich bei der Eingabe von "1" das Programm neustarten lassen.

    Dabei passiert nichts und es schließt sich nach erneutem Betätigen einer beliebigen Taste.

    Vielen Dank im Vorraus.

    Acro

    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    int main () {
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Vereinbarungen
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	float netto, brutto, mehrwertsteuer;
    	char antwort;
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Schleifenanfang
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    do {
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Eingabeaufforderung
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	cout << "Bitte geben Sie den Nettowert in Euro ein: ";
    	cin >> netto;
    
    	cout << "Bitte geben Sie die aktuelle Mehrwertsteuer in Prozent an: ";
    	cin >> mehrwertsteuer;
    	cout << endl << endl;
    	cout.width (30);
    	cout << "Der Nettowert betraegt: ";
    	cout.setf(ios::showpoint); 
    	cout.setf(ios::fixed);
    	cout.width (20);
    	cout.precision(2);
    	cout << netto;
    	cout.width (5);
    	cout << " Euro" << endl;
    
    	cout.width (30);
    	cout << "Die Mehrwertsteuer betraegt: ";
    	cout.setf(ios::showpoint); 
    	cout.setf(ios::fixed);
    	cout.width (20);
    	cout.precision(2);
    	cout << mehrwertsteuer;
    	cout.width (5);
    	cout << " %" << endl;
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Rechnung
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	mehrwertsteuer = mehrwertsteuer / 100;
    	brutto = netto + netto * mehrwertsteuer;
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Ausgabe 
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	cout.width (30);
    	cout << "Der Bruttopreis betraegt: ";
    	cout.setf(ios::showpoint); 
    	cout.setf(ios::fixed);
    	cout.width (20);
    	cout.precision(2);
    	cout << brutto;
    	cout.width (5);
    	cout << " Euro" << endl;
    	cout << endl << endl;
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Schleifenabfrage
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	cout << "Bruttowert erneut berechnen?" << endl;
    	cout << "1 = ja" << endl;
    	cout << "2 = nein" << endl;
    	cin >> antwort;
    }
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Schleifenende
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    while (antwort == 1);
    
    	getch();
    }
    


  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum C++ (alle ISO-Standards) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    C und C++ sind zwei ganz unterschiedliche Sprachen (auch wenn du dein Bestes gibst, C++ wie C zu programmieren 🙄 ).

    antwort ist vom Typ char . Ein char , der die Ziffer '1' enthält, hat nicht (unbedingt) den Wert der Zahl 1. Ändere daher die Laufbedingung zu while (antwort == '1'); und es wird wie gewünscht funktionieren.

    Allgemein ist float so ziemlich der schlechtestmögliche Datentyp, um mit Geldbeträgen zu rechnen. Eine brauchbare Alternative für Anfänger wäre, mit Ganzzahlen (int) zu rechnen und zu sagen, dass alle Rechnungen in Cent oder Zehntelcent stattfinden.



  • Vielen Dank für die schnelle Antwort.

    Ich habe jetzt an den Vereinbarungen und der Schleifenbedingung etwas geändert. Ich hätte die Schleife gerne mit den Worten "ja" und "nein" abgefragt, aber das habe ich nicht hinbekommen. Mit dem vorgeschlagenen Ansatz hat es auch nicht funktioniert. Deshalb habe ich es jetzt mit Zahlen geschrieben. Ist zwar nicht so wie gewollt, aber es erfüllt den Zweck.

    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    int main () {
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Vereinbarungen
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	double netto, brutto, mehrwertsteuer, antwort;
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Schleifenanfang
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    do {
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Eingabeaufforderung
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	cout << "Bitte geben Sie den Nettowert in Euro ein: ";
    	cin >> netto;
    
    	cout << "Bitte geben Sie die aktuelle Mehrwertsteuer in Prozent an: ";
    	cin >> mehrwertsteuer;
    
    	cout << endl << endl;
    
    	cout.width (30);
    	cout << "Der Nettowert betraegt: ";
    	cout.setf(ios::showpoint); 
    	cout.setf(ios::fixed);
    	cout.width (20);
    	cout.precision(2);
    	cout << netto;
    	cout.width (5);
    	cout << " Euro" << endl;
    
    	cout.width (30);
    	cout << "Die Mehrwertsteuer betraegt: ";
    	cout.setf(ios::showpoint); 
    	cout.setf(ios::fixed);
    	cout.width (20);
    	cout.precision(2);
    	cout << mehrwertsteuer;
    	cout.width (5);
    	cout << " %" << endl;
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Rechnung
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	mehrwertsteuer = mehrwertsteuer / 100;
    	brutto = netto + netto * mehrwertsteuer;
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Ausgabe 
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	cout.width (30);
    	cout << "Der Bruttopreis betraegt: ";
    	cout.setf(ios::showpoint); 
    	cout.setf(ios::fixed);
    	cout.width (20);
    	cout.precision(2);
    	cout << brutto;
    	cout.width (5);
    	cout << " Euro" << endl;
    	cout << endl << endl;
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Schleifenabfrage
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    	cout << "Bruttowert erneut berechnen?" << endl;
    	cout << "1 = ja" << endl;
    	cout << "2 = nein" << endl;
    	cin >> antwort;
    	cout << endl;
    
    }
    
    	////////////////////////////////////////////////////////////////////////////////////////////
    	// Schleifenende
    	////////////////////////////////////////////////////////////////////////////////////////////
    
    while (antwort == 1);
    
    	getch();
    }
    

    Die Ausgabe sieht dann so aus:

    Bitte geben Sie den Nettowert in Euro ein: 250000
    Bitte geben Sie die aktuelle Mehrwertsteuer in Prozent an: 19
    
          Der Nettowert betraegt:            250000.00 Euro
     Die Mehrwertsteuer betraegt:                19.00    %
        Der Bruttopreis betraegt:            297500.00 Euro
    
    Bruttowert erneut berechnen?
    1 = ja
    2 = nein
    1
    
    Bitte geben Sie den Nettowert in Euro ein: 66000
    Bitte geben Sie die aktuelle Mehrwertsteuer in Prozent an: 19
    
          Der Nettowert betraegt:             66000.00 Euro
     Die Mehrwertsteuer betraegt:                19.00    %
        Der Bruttopreis betraegt:             78540.00 Euro
    
    Bruttowert erneut berechnen?
    1 = ja
    2 = nein
    2
    
    --------------------------------
    Process exited with return value 0
    Press any key to continue . . .
    


  • "habe nicht hinbekommen" und "hat nicht funktioniert" sind so ziemlich die sinnlosesten Fehlerbeschreibungen, wenn du Hilfe willst. Wer soll damit etwas anfangen?

    Den Text für die Bedingung der while-Schleife hättest du einfach nur kopieren müssen.



  • manni66 schrieb:

    "habe nicht hinbekommen" und "hat nicht funktioniert" sind so ziemlich die sinnlosesten Fehlerbeschreibungen, wenn du Hilfe willst. Wer soll damit etwas anfangen?

    Den Text für die Bedingung der while-Schleife hättest du einfach nur kopieren müssen.

    Von der Sinnlosigkeit dieses Beitrages fange ich garnicht erst an.

    Wenn du nähere Informationen zu einem Fehler brauchst, dann lass es mich einfach wissen.

    Das Problem ist gelöst. Dieser Thread kann geschlossen werden.

    Acro


Log in to reply