Mein erster Rechner



  • Und warum die Variablen nicht lokal in main deklarieren statt global?



  • ja das system werde ich jetzt ersetzen aber warum sollte man die Variablen local machen? global kann man sie doch immer nutzen ist das nicht zum vorteil ?

    Edit:
    Ich habe mein Programm code mal geändert ich denke so sollte es richtig sein.

    //Plus Rechner by Raidenkk(Konsole)
    #include <iostream>
    #include <stdio.h>
    
    using namespace std;
    
    //Wait Function - Damit das Programm sich nicht einfach schließt.
    void wait () 
    { 
        setvbuf(stdin, NULL, _IONBF, 0);  
        setvbuf(stdin, NULL, _IOFBF, BUFSIZ); 
        getchar(); 
    } 
    
    //Hauptschleife
    int main(){
    	//Variablen - Local
    	int Wert1 = 0;
    	int Wert2 = 0;
    	int Ergebniss = 0;
    
    	//Vorstellung
    	cout << "<~[ Plus Rechner by Raidenkk ]~>\n";
    	cout << endl;
    
    	//Eingabe Wert1
    	cout << "Geben sie den ersten Wert ein: \n";
    	cin >> Wert1;
    
    	//Eingabe Wert2
    	cout << "Geben sie nun den zweiten Wert ein: \n";
    	cin >> Wert2;
    
    	//Rechnung
    	Ergebniss = Wert1 + Wert2;
    
    	//Ausgabe
    	cout << "Ihr Ergebniss lautet: " << Ergebniss << endl;
    
    	wait();
    	return 0;
    }
    


  • Nein, dass ist nicht von Vorteil. Wenn du Variablen in einer anderen Funktion nutzen willst, mach es mit Übergabeparameter. Infos dazu findest du unter anderem hier



  • Da hat SideWinder drei Möglichkeiten gezeigt zu verhindern, dass sich die Konsole nach der Ausführung schliesst und du entscheidest dich für die C-Variante mit undefiniertem Verhalten? 😕



  • ich habe mal ein Test gemacht und hoffe das dies eine bessere Variante ist das mein Programm sich nicht einfach schließt^^

    #include <iostream>
    #include <conio.h> 
    #include <windows.h> 
    
    using namespace std;
    
    //Function wait
    void wait () 
    { 
    	// EXTRA!
    	cout << endl; cout << endl;
    	cout << "<Push a [Key] to Close!>";
    
        // Leere Puffer 
        FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); 
        // Lese den nächsten Tastendruck 
        getch(); 
    }
    
    //Hauptschleife
    int main(){
    	cout << "TEST!";
    
    	wait();
    	return 0;
    }
    


  • Warum nimmst Du nicht einfach die C++ Variante???



  • Weil man bei der enter drücken muss. Ich kann verstehen, dass man die nicht nehmen will.

    Wichtig zu wissen ist aber bei der conio-Variante, dass das eben nicht portabel ist. Auf Dauer sollte also kein Programm so etwas enthalten.



  • ich habe mich doch für die c++ Variante entschieden.
    Ist es eigentlich möglich erst die Main schleife zu schreiben und dann darunter die Funktionen? ich habe vorher mit Blitz Basic Programmiert und da ist es eigentlich so üblich^^?



  • Ja, ist es.

    Dazu musst du dem Compiler nur "versprechen" eine bestimmte Funktion später zu schreiben. Das ganze nennt sich forward deklaration.

    void wait();
    
    int main()
    {
    wait();
    return 0;
    }
    
    void wait()
    {
    cout << "blablabla" << endl;
    }
    


  • ahh oki ich danke dir^^ (EUCH)



  • #include <iostream>
    
    int main()
    {
        std::cout << "Geben Sie 2 Zahlen ein!" << std::endl;
        int a, b;
        std::cin >> a >> b;
        std::cout << "Die Summe ist " << a + b << std::endl;
    
        std::cin.get();
    }
    

    Mal ne schön portable Lösung :p

    Weiters ist 'main' keine Schleife, sondern eine Funktion.


Anmelden zum Antworten