Warum geht das nicht?



  • #include<iostream.h> // veraltet: <iostream> nehmen
    #include<stdio.h> // hier genauso <cstdlib>, außerdem brauchst du das nicht
    
    void Drawer(bool x)
    {
     if(x) cout << "Û";
     else cout << " ";
    }
    

    edit: zu langsam

    mfg



  • Ein Studium der Schleifen und switch/case Anweisungen (sprich: der absoluten Grundlagen) könnte auch nicht schaden.



  • Ponto schrieb:

    Ich glaube mit std::vector wäre das Programm 80% kürzer.

    Untertreibst du nicht ein wenig? 😃
    Ich tippe auf >95% weniger LOC, >99% bessere Lesbarkeit

    @michel_herke
    Zuerst das obligatorische:

    #include<iostream>
    // anstelle von
    //#include<iostream.h>
    //#include<stdio.h>
    

    Deine Changer Funktion ist nicht nur unnütz sondern auch falsch. Wenn du einem bool einen Wert zuweisen willst dann mach es einfach:

    bool aa;
    // ...
    if (anz1 > 0) {
      aa = true;
    }
    // alternativ:
    az = (anz1 > 0);
    

    Darüber hinaus (in Bezug auf die Drawer Funktion):

    bool x;
    
    if (x) cout << "Û";
    // ist deutlich einfacher & lesbarer als
    if (x == true) cout << "Û";
    

    Vor allem solltest du deine Werte aufbereiten bevor du sie ausgibst 😉

    Falls dieser Post kein aufwendiger Witz sein soll: Such dir erst einmal ein nettes Tutorial, (am besten eins wo auch Schleifen besprochen werden 😉 ) und mach dich dann mit der STL vertraut, insbesondere std::vector und std::map.



  • wow. das könnte man glatt bei thedailywtf einschicken oo



  • Ich denke, dass man in diesem Fall mit arrays besser dran ist, vector ist ziemlicher overkill, und arrays lassen sich einfacher mit Werten initialisieren. Ich dachte da an etwas in der Art:

    #include <iostream>
    #include <sstream>
    #include <string>
    
    using namespace std;
    
    static const string faecher[] =
      { "Mathe", "Deutsch", "der 1. Fremdsprache", "der 2.Fremdsprache",
        "Chemie", "Physik", "Sport", "PoWi", "WPF", "Geschichte", "Kunst",
        "Religion", "Sozialverhalten", "Arbeitsverhalten" };
    static const int anzahl_faecher = sizeof(faecher) / sizeof(faecher[0]);
    
    int main() {
      int noten[6] = {0}, notensumme = 0;
    
      for(int i = 0; i < anzahl_faecher; ++i) {
        int x;
        string zeile;
        stringstream sstr;
    
        do {
          cout << "Bitte geben Sie Ihre Note in " << faecher[i] << " ein: " << flush;
    
          getline(cin, zeile);
          sstr.clear();
          sstr.str(zeile);
          sstr >> x;
        } while(!sstr || x < 1 || x > 6);
    
        notensumme += x;
        ++noten[x - 1];
      }
    
      for(int i = 0; i < 6; ++i)
        cout << "Anzahl " << i+1 << "er: " << noten[i] << endl;
      cout << "Durchschnitt: " << double(notensumme) / anzahl_faecher << endl;
    }
    


  • int Add (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int o, int p )
    
    {
    return (a+b+c+d+e+f+g+h+i+j+k+l+o+p);
    }
    

    das ist doch nicht dein ernst?!?



  • otze schrieb:

    int Add (int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int o, int p )
    
    {
    return (a+b+c+d+e+f+g+h+i+j+k+l+o+p);
    }
    

    das ist doch nicht dein ernst?!?

    ja, übel. mach das mit #define 😉



  • [cpp]
    cout <<" Bitte geben sie ihre Note in Deutsch ein: ";
    cin >> b;
    if (b == 1) anz2++;

    if (b ==2) anz2++; [/cpp]

    ich würde sagen, dass verfälscht das Ergebnis



  • Macht ihn doch nicht so fertig! So programmiert doch jeder Anfänger. Möchte nicht wissen, wie mein Code vor knapp 15 Jahren aussah. 😃

    Immerhin will er ja besser werden.



  • michel_herke schrieb:

    ...
    
    aa:
    cout <<"                Bitte geben sie ihre Note in Mathe ein: ";
    cin >> a;
    if (a == 1) anz1++;        //    Die Noten werden abgerfragt.
    
    if (a ==2) anz2++;         //    Bei jeder 1 soll zu anz1 eins dazu gezählt werden
    if (a ==3)anz3++;          //    Bei jeder 2, soll eins zu anz2 dazugezählt werden usw.
    
    if (a ==4)anz4++;
    
    if (a ==5)anz5++;
    
    if (a ==6)anz6++;
    
    if ( a > 6 )
     {
    cout <<"                Ungueltige Note" << endl ;
    goto aa;
    
    ... 
    
    goto ao;
    }
    ap:
     cout <<"                Bitte geben sie ihre Note in Arbeitsverhalten ein: ";
    cin >> p;
    if (a == 1)anz1++;
    
    if (a ==2)anz2++;
    
    if (a ==3)anz3++;
    
    if (a ==4)anz4++;
    
    if (a ==5)anz5++;
    
    if (a ==6)anz6++;
    
    if ( p > 6 )
    
    ...
    

    1. goto-anweisungen sind nicht das wahre
    2. auch das verfälscht das ergebnis (2x a++)



  • statt dieses...

    if (a == 1) anz1++;        
    if (a ==2) anz2++;         
    if (a ==3) anz3++;          
    ...
    ... usw...
    

    sollte man doch besser ein array nehmen


Anmelden zum Antworten