Meinung



  • hey leute!
    war ich froh als ich teile des erprobten wissens auf ebene if else, string usw...
    (siehe thread "schaltjahr") ausprobiert, und sofort gecheckt hab...
    funktioniert eigentlich einwandfrei.
    doch nun wollte ich euch um eure meinung fragen.
    Wie findet ihr meinen stil?
    verbesserungswürdig?
    akzeptabel?
    total mies?

    schaut´s euch an!

    #include <iostream>
    using namespace std;
    
    int main()
    {
    float zahl1;
    float zahl2;
    
    cout <<"Mittelwertberechnung zweier Zahlen:\n\n\n";
    cout <<"Geben Sie die 1.Zahl ein:\n";
    cin >>zahl1;
    cout <<"und die 2. bitte:\n";
    cin >>zahl2;
    cout <<"Der Mittelwert dieser 2 Zahlen ist "<<(zahl1+zahl2)/2<<endl;
    
    std::string antwort;
    std::string richtig="j";
    cout<<"Nochmal Spielen? (j/n)\n";
    cin>>antwort;
                 if(antwort==richtig)
                 {
                 cout <<"Na dann...!\n\n\n\n\n\n\n";
                 main();
                 }
                 else
                 {
                 std::string answer;
                 std::string richtig="j";
                 cout <<"Willst du das Programm verlassen? (j/n)\n";
                 cin>>answer;
                             if(answer==richtig)
                             {
                             system("PAUSE");
                             return EXIT_SUCCESS;
                             }
                             else
                             {
                             main();
                             }
                 }
    }
    


  • Die jahre sollten int typen sein oder willst du 3.4958273 jahre berechnen?
    Und warum deklarierst du antwort und richtig neu nur das antwort bei else answer ist?
    Aber sonst okay 🙂
    Und if und else könnte man auch in eine schleife setzen 😉

    EDIT: Warum schreibst du std::string wenn du using namespace std; drin hast o.0

    also string antwort geht so wenn du std mit drin hast 🙂

    Hier mal ein code beispiel(nicht getestet):

    #include <iostream>
    using namespace std;
    
    int main()
    {
    int zahl1;
    int zahl2;
    
    start:
    cout <<"Mittelwertberechnung zweier Zahlen:\n\n\n";
    cout <<"Geben Sie die 1.Zahl ein:\n";
    cin >>zahl1;
    cout <<"und die 2. bitte:\n";
    cin >>zahl2;
    cout <<"Der Mittelwert dieser 2 Zahlen ist "<<(zahl1+zahl2)/2<<endl;
    
    string antwort;
    string richtig="j";
    cout<<"Nochmal Spielen? (j/n)\n";
    cin>>antwort;
                 if(antwort==richtig)
                 {
                 cout <<"Na dann...!\n\n\n\n\n\n\n";
                 goto start:
                 }
                 else
                 {
                 cout <<"Willst du das Programm verlassen? (j/n)\n";
                 cin>>antwort;
                             if(antwort==richtig)
                             {
                             system("PAUSE");
                             }
                             else
                             {
    
                             }
                 }
    }
    

    Das ist mir auch unerklärlich: return EXIT_SUCCESS; was soll das??? mach ein return 0;



  • leider schlecht.

    ..
                if(antwort==richtig)
                 {
                 cout <<"Na dann...!\n\n\n\n\n\n\n";
                 main();//wrong
                 }
                 else
    


  • Also ich finde das main() niemals im Programm nochmal aufgerufen werden sollte, dafür gibts doch Schleifen. 😉

    Ich denke auch das der Standard diese Vorgehensweise nicht billigt.

    MfG



  • @XaTrIxX : Erstmal etwas, was nichts mit Stil zu tun hat: Formatierung. Versuch doch mal, deinen Code in etwa so zu formatieren, wie du es beispielsweise hier oft siehst. So wie du das jetzt formatierst, ist es eher nicht so gut. Du wirst dir dadurch Fehler in den Code einbauen.



  • ich würde es so machen:

    #include <iostream> 
    #include <cstdlib> // wegen EXIT_SUCCESS
    using namespace std; 
    
    int main() 
    { 
      for(;;) // endlosschleife
      {
        cout <<"Mittelwertberechnung zweier Zahlen:\n\n"<<endl; 
        cout <<"Geben Sie die 1.Zahl ein:"<<endl; 
        int zahl1; 
        cin >>zahl1; 
    
        cout <<"und die 2. bitte:"<<endl; 
        int zahl2; 
        cin >>zahl2; 
    
        cout <<"Der Mittelwert dieser 2 Zahlen ist "<<(zahl1+zahl2)/2<<endl; 
    
        string antwort; 
        cout<<"Nochmal Spielen? (j/n)"<<endl; 
        cin>>antwort; 
    
        if(antwort=="j") 
        { 
          cout <<"Na dann...!\n\n\n\n\n\n"<<endl; 
          continue;
        } 
        else 
        { 
          cout <<"Willst du das Programm verlassen? (j/n)"<<endl; 
          cin>>antwort; 
          if(antwort=="j") break;
        } 
      }
    
      system("PAUSE"); 
      return EXIT_SUCCESS;
    }
    

    am ende einer konsolen-ausgabe sollte in c++ immer endl stehen. das gibt nicht nur eine new-line aus sondern sorgt auch dafür, das der inhalt des ausgabepuffers tatsächlich an die konsole gesendet wird. mach in der praxis zwar nur ganz selten nen unterschied, gehört in c++ aber zum guten ton.

    die sache mit dem rekursiven aufruf von main() ist auch keine gute idee. bei manchen compilern (zb gcc) führt das sogar zu programmfehlern. gcc fügt nämlich ganz zu anfang von main() noch einen aufruf der funktion _main() ein, in der normalerweise die laufzeitumgebung von c++ (dh cin/cout etc) initialisiert wird.

    ansonsten gibts an deinem programm nicht viel auszusetzen. und programmierstil ist immer auch geschmackssache. darüber kannst du hier im forum streiten ohne ende 😃


Anmelden zum Antworten