int Ergebnis will sich nicht erhöhen.



  • Danke! 😃



  • Zu früh gefreut... Geht leider immer noch nicht... 😞

    /*© Copyright Enitin*/
    #include <conio.h>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	const int Sonderzeichen = 1;
    	const int Buchstaben = 2;
    	const int Zahlen = 3;
    	int Eingabe;
    	int Ergebnis;
    
    Eingabe1:
    	cout << "Bitte erstes Zeichen eingeben." << endl;
    	cin >> Eingabe;
    
    	if (Eingabe == '!' || Eingabe == '#')
    	{
    		Ergebnis = Ergebnis + Sonderzeichen;
    	}
    	else if (Eingabe == 'A' || Eingabe == 'a')
    	{
    		Ergebnis = Ergebnis + Buchstaben;
    	}
    	else if (Eingabe == '1' || Eingabe == '2')
    	{
    		Ergebnis = Ergebnis + Zahlen;
    	}
    	else
    	{
    		cout << "Keine guelltige Eingabe!" << endl;
    		getch();
    		goto Eingabe1;
    	}
    
    	cout << Ergebnis << endl;
    	getch();
    
    	return 0;
    }
    


  • Du musst die Variable 'Ergebnis' initialisieren und mach 'Eingabe' mal zu char. Dann müsste es klappen.



  • Eingabe und Ergebnis sollten vom Typ char sein. Was hast du überhaupt vor? Das wäre echt sinnvoll, wenn du das mal beschreiben würdest...



  • Das mit dem char ist mir dann auch aufgefallen nur was heißt "initialisieren" genau? 🙂



  • Initialisieren heißt der Variable einen ersten Wert zuzuweisen.

    Das geschieht aber in den if-Blöcken und sollte keine Probleme machen, da die Schleife eh nur verlassen wird, wenn ein Fall eingetreten und eine Zuweisung erfolgt ist.



  • Danke! Es funktioniert. 👍 Mal schauen ob jetzt alles reibungslos abläuft.



  • hjkhjkhjk schrieb:

    Das geschieht aber in den if-Blöcken und sollte keine Probleme machen, da die Schleife eh nur verlassen wird, wenn ein Fall eingetreten und eine Zuweisung erfolgt ist.

    Doch das gibt Probleme, weil bei

    Ergebnis = Ergebnis + Sonderzeichen;
    

    die Variable 'Ergebnis' noch nicht initialisiert ist (die Variable wird auf der Rechten Seite vom = verwendet).



  • icarus2 schrieb:

    hjkhjkhjk schrieb:

    Das geschieht aber in den if-Blöcken und sollte keine Probleme machen, da die Schleife eh nur verlassen wird, wenn ein Fall eingetreten und eine Zuweisung erfolgt ist.

    Doch das gibt Probleme, weil bei

    Ergebnis = Ergebnis + Sonderzeichen;
    

    die Variable 'Ergebnis' noch nicht initialisiert ist (die Variable wird auf der Rechten Seite vom = verwendet).

    So genau hatte ich es mir dann doch nicht angesehen, da hast du selbstverständlich recht.



  • guelltige

    🙄



  • Enitin schrieb:

    /*© Copyright Enitin*/
    
    .-'---`-.
    ,'          `.
    |             \
    |              \
    \           _  \
    ,\  _    ,'-,/-)\
    ( * \ \,' ,' ,'-)
     `._,)     -',-')
       \/         ''/
        )        / /
       /       ,'-'
    


  • wenn du weißt, dass "goto" nicht "gut" ist, wieso verwendest du es dann?

    Lokale Variablen werden (üblicherweise) nicht automatisch initialisiert, d.h. sie haben einen willkürlich Wert bzw. (meines Wissens nach) jenen die die gerade zugewiesene Speicherzelle eben aufweist. Daher wird sich das Programm dann üblicherweise willkürlich verhalten, sofern der Wert verwendet wird, bevor er einen definierten Wert zugewiesen bekommt, eben dein "Ergebnis = ergebnis+blabla;".
    Das Ergebnis auf der rechten Seite hat keinen (wohl-)definierten Wert und deswegen hat der neue Wert von Ergebnis ebenso keinen.
    Lies mal ein Buch dazu.


Anmelden zum Antworten