Buchstaben einlesen



  • Also ich bin neu hier im Forum sowie bei C++ also Anfänger.

    Ich möchte das ich z.B. ":" dieses Zeichen oder ein Wort eingeben kann und dann eine neue Funktion aufrufen

    Wie mach ich das ? ich kenn nur eine Möglichkeit mit "if"

    also z.B.
    cout << "ein Wort:" << a << endl;
    int (oder was für Buchstaben?) a;
    cin >> a;

    und dann das mit "if" .

    Ist das vom Ansatz richtig ?^^ :p

    Wäre nett wenn mir einer hilft 🙂



  • hmm ein Buchstabe ist ein character.

    std::cout << "Geben Sie einen Buchstaben ein: " << std::flush;
    char my_char = 0;
    std::cin >> my_char;
    std::cout << "Sie haben \"" << my_char "\" eingegeben! << std::endl;
    

    ...

    aja Worte ließt du am besten mit std::getline und std::string und std::cin ein:

    #include <string>
    #include <iostream>
    
    int main()
    {
        std::cout << "My Programm 001" << std::endl;
        std::string my_string("Das ist ein String");
        std::cout << "Eine Variable enthält in diesem Fall: " << my_string << "." << std::endl;
        std::cout << "Geben Sie doch selber etwas ein! " << std::flush;
        std::getline(std::cin, my_string);
        std::cout << "Oho! Sie haben \"" << my_string << "\" eingegeben!" << std::endl;
    }
    

    🙂



  • Danke (D)Evil für die schnelle antwort!!! jedoch hab ich das 2. nicht so ganz verstanden aus dem ersten hab ich das gemacht :

    #include <iostream>
    
    using namespace std;
    int main()  {
    	cout << "Geben sie einen Buchstaben ein" << endl;
    	char buchstabe;
    	cin >> buchstabe;
    
    	if(buchstabe=d)
    
    		cout << "Geben sie die 1. Zahl ein:" << endl;
                    double zahl1;
                    cin >> zahl1;
    
                    cout << "Geben sie die 2. Zahl ein:" << endl;
                    double zahl2;
                    cin >> zahl2;
    
                    double ergebnis=zahl1/zahl2;
    
                    cout << "Das Ergebnis ist:" << ergebnis << endl;
    
    }
    

    Wäre das eine Möglichkeit "d" einzugeben und eine division "auszulösen"? 😋



  • Nee ... musst dem schon sagen was das d sein soll ... der hält das für ne variable ... 'd' ...

    #include <iostream>
    
    int main()  
    {
    	std::cout << "Geben Sie einen Buchstaben ein: " << std::flush;
    	char character = 0;
    	std::cin >> character;
    
    	if (character == 'd')
    	{
    		std::cout << "1. Zahl: " << std::flush;
    		double number_one = 0.0;
    		std::cin >> number_one;
    		std::cout << "2. Zahl: " << std::flush;
    		double number_two = 0.0;
    		std::cin >> number_two;
    
    		if (number_two == 0.0)
    			std::cout << "Math error!" << std::endl;
    
    		std::cout << "Ergebnis: " << (number_one / number_two) << std::endl;
    	}
    	else
    		std::cout << "Keine Funktion hinterlegt!" << std::endl;
    }
    


  • Also es geht^^
    Danke nochmals.
    Nun habe ich 3 Fragen zu deiner Lösung.

    1.Warum benutzt du "flush" ,wofür steht dies ? könnte dort nich auch "endl" stehn ?

    2.warum haste "d" so -->> 'd' angegeben statt einfach ein d?

    3.Warum benutzt du nicht "using namespace std; " ?

    🙂



  • 1. Das bewirkt das der Stream direkt ausgegeben wird. => http://www.cppreference.com/cppio/flush.html
    2. Weil der Compiler dann denkt es könnte sich dabei um die Variable d handeln. Man gibt chars d.h. in der Programmiersprache C++(C) mit '' an und Strings mit "" ...
    3. Wäre es ein Header hätte es einen Sinn. So ist es einfach nur weil ich gern weiß auf welchen Namespace ich zugreifen.



  • Die 2. Frage mach1 sinn 🙂

    Doch bei der 1. und 3. hätte ich noch eine frage.

    1.Versteh ich nicht. Stream ? flush ? 😮

    3.Ich schreibe alles in eine quelldatei.(.cpp)
    Was soll ich in eine Header datei reinmachen ? 😕

    _____________________________

    Summernoon



  • hmm eine Klassen ... templates ... usw ...



  • hab das programm mal erweitert:

    #include <iostream>
    
    int main()  
    {
        std::cout << "Geben Sie einen Buchstaben ein: " << std::flush;
        char character = 0;
        std::cin >> character;
    
        if (character == 'd')
        {
            std::cout << "1. Zahl: " << std::flush;
            double number_one = 0.0;
            std::cin >> number_one;
            std::cout << "2. Zahl: " << std::flush;
            double number_two = 0.0;
            std::cin >> number_two;
    
            if (number_two == 0.0)
                std::cout << "Math error!" << std::endl;
    
            std::cout << "Ergebnis: " << (number_one / number_two) << std::endl;
        }
    
            if (character == 'm')   {
    		std::cout << "1.Zahl:" << std::flush;
    		double number_one = 0.0;
    		std::cin >> number_one = 0.0;
    		std::cout << "2.Zahl:" << std::flush;
    		double number_two = 0.0;
    		std::cin >> number_two = 0.0;
    		std::cout << "Ergebnis:" << (number_one * number_two) << std::endl;
    
    		if (number_one == 0.0 ||number_two == 0.0 )
    			std::cout << "Math error!" << std::endl;
    
    		}
    

    in Zeile 27 und 30 soll ein Fehler sein. " Binärer Operator '=' :Es konnte kein Operator gefunden werden, dei einen rechtsseitigen Operanden vom Typ 'double' akzeptiert.

    Was hab ich falsch gemacht ?



  • ja ist da auch ... du nutzt den streamoperator und weißt irgendeiner variable was zu.

    #include <iostream>
    
    int main()  
    {
    	std::cout << "Geben Sie einen Buchstaben ein: " << std::flush;
    	char character = 0;
    	std::cin >> character;
    
    	std::cout << "1. Zahl: " << std::flush;
    	double number_one = 0.0;
    	std::cin >> number_one;
    	std::cout << "2. Zahl: " << std::flush;
    	double number_two = 0.0;
    	std::cin >> number_two;
    
    	if (number_two == 0.0)
    		std::cout << "Math error!" << std::endl;
    
    	if (character == 'd')
    		std::cout << "Ergebnis: " << (number_one / number_two) << std::endl;
    	else if (character == 'm')
    		std::cout << "Ergebnis: " << (number_one * number_two) << std::endl;
    	else if (character == 'a')
    		std::cout << "Ergebnis: " << (number_one + number_two) << std::endl;
    }
    

    ... mach es so ... da die Eingabe ja immer die selbe ist ...



  • Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum DOS und Win32-Konsole verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • Summernoon schrieb:

    1.Versteh ich nicht. Stream ? flush ? 😮

    Wenn du in einen ostream (cout ist ein ostream, aber das nur am Rande ;)) schreibst, landen die Daten erstmal in einem internen Stream-Buffer. Dieser wird in regelmäßigen Abständen wieder geleert - und erst dann landen die Daten tatsächlich in der Ausgabe (bei cout: auf dem Monitor). 'flush' sagt dem Stream, daß er seinen Buffer genau jetzt entleeren soll (selbst wenn er eigentlich noch etwas Zeit dafür gehabt hätte).

    (und endl schreibt erst ein '\n' auf den Stream, bevor es ihn ebenfalls flusht - das kann mitunter stören, weil es den Cursor in die nächste Zeile schiebt)


Anmelden zum Antworten