[C++] Programm stürzt ab

flaschenkind

Well-known member
ID: 118459
L
20 April 2006
4.507
337
Ich hab mal angefangen C++ zu lernen. Bis jetzt verstehe ich alles, aber bei dem aktuellen Kapitel ist eine Aufgabe, bei der ich mehrere Eingaben eines Users auslesen soll und dann eine Rechnung durchführen. Also nach einander. Bei einer klappt es problemlos, aber nicht mit mehren. Sobald dann die zweite kommt, stürzt das Programm ab.

Das hier hab ich mir geschrieben
PHP:
#include <iostream>

int main(){
    
    char z1[20], z2[20], z3[20];
    int a, b, c, d;
    
    std::cout << "Bitte gib eine Zahl ein: " << std::flush;
    std::cin.get(z1, 20);
    std::cout << "Bitte gib eine 2. Zahl ein: " << std::flush;
    std::cin.get(z2, 20);
    std::cout << std::endl;
    std::cout << "Bitte gib eine 3. Zahl ein: " << std::flush;
    std::cin.get(z3, 20);
    std::cout << std::endl;
    
    a = atoi(z1);
    b = atoi(z2);
    c = atoi(z3);
    
    d = ((a + 10) * b ) / c;
    
    std::cout << "Das Ergebnis ist: " << d << std::endl;
}

Wenn ich die erste Zahl eingegeben hab und enter drück kommt sofort der Text für die 2. und 3. Zahl und dann kommt das Windows Fenster, von wegen in dem Programm wurde ein Problem festgestellt und muss beendet werden :roll:

Wo ist dort der Fehler?
 
Zuletzt bearbeitet:
Thx, werd ich gleich mal testen.
Wenns dann geht, werde ich das dem Autor gleich direkt mal schreiben, weil von sowas stand da nie was geschrieben :roll:

EDIT: Ne, scheint nich zu klappen :-?

PHP:
#include <iostream>

int main(){
    
    char z1[20], z2[20], z3[20];
    int a, b, c, d;
    
    std::cout << "Bitte gib eine Zahl ein: " << std::flush;
    std::cin.get(z1, 20);
    std::cin.clear();
    std::cout << "Bitte gib eine 2. Zahl ein: " << std::flush;
    std::cin.get(z2, 20);
    std::cin.clear();
    std::cout << std::endl;
    std::cout << "Bitte gib eine 3. Zahl ein: " << std::flush;
    std::cin.get(z3, 20);
    std::cout << std::endl;
    
    a = atoi(z1);
    b = atoi(z2);
    c = atoi(z3);
    
    d = ((a + 10) * b ) / c;
    
    std::cout << "Das Ergebnis ist: " << d << std::endl;
}

Oder muss das anders eingesetzt werden und ich hab das jetzt falsch verstanden?

Immer noch das selbe.
 
So sollte es funktionieren


PHP:
#include <iostream>

int main(){
    
    char z1[20], z2[20], z3[20];
    int a, b, c, d;

    std::cout << "Bitte gib eine Zahl ein: " << std::flush;
    std::cin.get(z1, 20);
    std::cin.ignore();
    std::cout << "Bitte gib eine 2. Zahl ein: " << std::flush;
    std::cin.get(z2, 20);
    std::cin.ignore();
    std::cout << std::endl;
    std::cout << "Bitte gib eine 3. Zahl ein: " << std::flush;
    std::cin.get(z3, 20);
    std::cout << std::endl;

    a = atoi(z1);  
    b = atoi(z2);
    c = atoi(z3);
    
    d = ((a + 10) * b ) / c;
    
    std::cout << "Das Ergebnis ist: " << d << std::endl;

	return 0;
}
 
Zuletzt bearbeitet: