Erstes C++ Programm



  • Habe heute mein erstes kleines c++ Programm geschrieben, dabei ist sollte ich erwähnen, dass ich noch nicht über eine if else statements hinaus bin.
    Meine Frage, ist der Code soweit Ok? Könnt ihr mir Verbesserungsvorschläge und Anregungen geben, wie der Code optimiert werden könnte?

    #include "stdafx.h"
    #include<iostream>
    
    #include <climits>
    
    int a,b,c,d;
    
    int main()
    {
    
    std::cout << "1 - addieren\n2 - subtrahieren\n3 - multiplizieren\n4 - dividieren\n" << std::endl <<std::endl;
    std::cin >> a; std::cout << std::endl;
    system("cls");
    
    if (a == 1){
    
    std::cout << "Geben sie zwei Zahlen zum Addieren ein" << std::endl;
    std::cin >> b; std::cout << std::endl;
    std::cin >> c; std::cout << std::endl;
    system("cls");
    std::cout<< b+c << std::endl;
    
    }
    else if(a==2){
    std::cout << "Geben sie zwei Zahlen zum subtrahieren ein" << std::endl;
    std::cin >> b; std::cout << std::endl;
    std::cin >> c; std::cout << std::endl;
    system("cls");
    std::cout << b-c << std::endl;
    
    }
    else if (a == 3) {
    std::cout << "Geben sie zwei Zahlen zum multiplizieren ein" << std::endl;
    std::cin >> b; std::cout << std::endl;
    std::cin >> c; std::cout << std::endl;
    system("cls");
    std::cout << b * c << std::endl;
    
    }
    else if (a == 4) {
    std::cout << "Geben sie zwei Zahlen zum dividieren ein" << std::endl;
    std::cin >> b; std::cout << std::endl;
    std::cin >> c; std::cout << std::endl;
    system("cls");
    std::cout << b / c << std::endl;
    }
    
    system("Pause");
    
    return 0;
    }
    


  • Benutzt code-tags, das steigert die wahrscheinlichkeit dass sich jemand deinen code durchliest.

    • der include fuer stdafx.h ist overhead den du nicht brauchst
    • keine globalen variablen
    • wozu brauchst du climits?
    • system -calls sind windows only und bad practice
    • dividiere mal irgendwas durch null und wunder dich ueber das verhalten


  • Wenn du bisher nur if-else gemacht hast, kann man wenig sagen ohne deinem Lehrbuch sachen vorweg zu nehmen.

    Wenn du hier Code postest, nehm bitt die C++ Tage: Du kannst einfach den Code markieren und dann auf das C++ Kästchen, unter der Texteingabe beim Nachrichtenverfassen, klicken.

    Dann sind für lesbaren Code, Einrückungen wichtig. Das kann z.B. so aussehen:

    if (a == 1){
       std::cout << "Geben sie zwei Zahlen zum Addieren ein" << std::endl;
       std::cin >> b; std::cout << std::endl;
       std::cin >> c; std::cout << std::endl;
       system("cls");
       std::cout<< b+c << std::endl;
    }
    

    Zu deinem Code als solchen dann zumindest ein paar Anmerkungen:

    Deklariere deine Variablen nicht global (da oben, außerhalb von main) sondern nur in dem Bereich, in dem du die auch verwenden willst. (Bei dir eben in der main() ).

    system("Pause") ist nicht zu empfehlen, da Plattform spezifisch. Wenn du am Ende auf eine Eingabe warten möchtest nimm lieber: std::cin.ignore();

    Ähnliches gilt für system("cls"). Hierzu gibt es hier im Forum sogar einen Thread https://www.c-plusplus.net/forum/297556-full (weiß ich auch nur, dank google 😉 )

    Zwei mal std::endl direkt nacheinander ist eher unnötig. Nehm "\n" anstelle dessen. endl leehrt den Ausgabebuffer, das ist verhältnismäßig teuer und du brauchst es wahrscheinlich nicht, daher wirst du an allen Stellen an denen du endl benutzt einfach \n benutzen können.



  • Danke für die vielen Tipps, werde sie berücksichtigen.
    System cls war das erste, dass ich bei Google gefunden habe um die Console zu leeren, deshalb hab ich es einfach mal benutzt.



  • Cardiac schrieb:

    Benutzt code-tags, das steigert die wahrscheinlichkeit dass sich jemand deinen code durchliest.

    • der include fuer stdafx.h ist overhead den du nicht brauchst
    • keine globalen variablen
    • wozu brauchst du climits?
    • system -calls sind windows only und bad practice
    • dividiere mal irgendwas durch null und wunder dich ueber das verhalten

    Die includes habe ich nur zum experimentieren drin.
    Danke für die Tipps, dass mit dem durch 0 teilen werden ich dann beim nächsten versuch beheben.



  • Dieser Thread wurde von Moderator/in nachtfeuer aus dem Forum Rund um die Programmierung 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.



  • Benutz lieber:
    using namespace std;

    damit sparst du Dir das "std::"



  • buu2188 schrieb:

    Benutz lieber:
    using namespace std;

    damit sparst du Dir das "std::"

    Warum benutzt man denn dann überhaupt namespaces, wenn die nur stören?


Anmelden zum Antworten