bitte helfen - komm nicht weiter....



  • Hallo

    GPC schrieb:

    es heißt int main() und ganz unten kommt ein return 0; rein. Des Weiteren schreibt man statt #include <iostream.h> folgendes:

    Das solltest du trotzdem noch ändern.

    chrische



  • Also ich hätte da auch ein kleines Problem!
    Ich muss da für die Schule ein Programm erstellen, mit einer Würfelstatistik. Zum Glück hab ich von einem Kumpel da schon ein fertiges Programm bekommen, allerdings mussten wir noch ein Unterprogramm einbauen! Ok, so weit so gut, das Programm an sich funktioniert ja, hier is mal der Code:

    // Turbo, 28.4.2006, all rights reserved
    #include <iostream.h> // für cin() und cout()
    #include <iomanip.h> // für setw()...
    #include <stdlib.h> // für rand() und srand()
    #include <time.h> // für time()
    #include <conio.h> // für getch()

    // globale Variablen
    long int anz=0;
    long int w[6]; // Array mit 6 Zahlen
    int k; // für Zählschleifen
    double p[6];
    double j;

    void wuerfeln(void); // UP-Würfeln mit globalen Variablen
    void auswerten(void); // UP-Auswerten mit globalen Variablen
    void diagramm(void); // UP-Diagramm mit globalen Variablen

    int main()
    {
    int wurf;

    // Initialisieren
    for(k=0;k<=5;k++)
    { w[k]=0;
    p[k]=0;
    }
    srand( (unsigned)time( NULL ) ); //Zufallszahlen ermitteln
    cout << "Statistische Auswertung zum Würfeln:" << endl << endl;
    cout << "Wieviel mal würfeln = ";
    cin >> anz;

    wuerfeln(); // Aufruf des UP-Würfeln

    auswerten(); // Aufruf des UP-Auswerten

    clrscr() ;

    diagramm(); // Aufruf des UP-Diagramm

    getchar();
    return 0;
    }
    void wuerfeln(void) // UP-Würfeln beginnt
    {for(k=1;k<=anz;k++)
    { w[random(6)]+=1;
    }
    }

    // Auswerten und Schreiben auf bs
    void auswerten(void) // UP-Auswerten beginnt
    {cout.setf(ios:: showpoint);
    cout << endl;
    for(k=0;k<=5;k++)
    { cout << "Die " << k+1 << " wurde " << w[k] << " mal gewürfelt" << endl;
    }
    cout << endl;
    for(k=0;k<=5;k++)
    { cout << "Die " << k+1 << " wurde mit rel. Häufigkeit von ";
    cout << setw(6)<< (double)w[k]/anz << " gewürfelt" << endl;
    }
    cout << endl;
    for(k=0;k<=5;k++)
    { cout << "Die " << k+1 << " wurde mit proz. Häufigkeit von ";
    cout << setw(6) << (double)w[k]/anz*100 << " % gewürfelt" << endl;
    }
    getch();
    }

    // Versuch eines Balkendiagrammes für rel. Häufigkeiten
    void diagramm(void) // UP-Diagramm beginnt
    {for(k=0;k<=5;k++)
    { p[k]=(double)w[k]/anz;
    }
    cout.setf(ios:: fixed);
    cout << "Grafische Darstellung der Verteilung:" << endl << endl;
    for(j=0.5;j>=0.0;j-=0.05)
    { cout << setw(4) << j << " | ";
    for(k=0;k<=5;k++)
    { if(p[k]>=j)
    { cout << "x ";
    }
    else
    { cout << " ";
    }
    }
    cout << endl;
    }
    cout << " |____________" << endl;
    cout << " 1 2 3 4 5 6" << endl;
    }

    So, jetzt hätte ich da ein paar Fragen zu einigen Codes! Was bedeutet denn dieses "cout.setf(ios:: showpoint)" im Anfang des 2. UP? Genauso "cout.setf(ios:: fixed)" im 3. UP?
    Und eine letzte Frage: Was bewirkt setw()?



  • msdn?
    google?
    rtfm!



  • GPC schrieb:

    ...und ganz unten kommt ein return 0; rein.

    Das stimmt definitiv nicht. 😉



  • Warum nicht?



  • return 0 wird in main standardmäßig angenommen:

    C++ Final Draft schrieb:

    -5- A return statement in main has the effect of leaving the main function (destroying any objects with automatic storage duration) and calling exit with the return value as the argument. If control reaches the end of main without encountering a return statement, the effect is that of executing

    return 0;



  • sry jungs.... ich komm einfach nicht weiter.... und das was GPC mir geschrieben hat konnte ich in keinster form verarbeiten.... hat allein 2 tage gebraucht bis ich meine version fertig hatte 😣
    und jez geht nichtmal die perfekt 😞

    kann vllt einer meinen code mit dem vom gpc kombinieren so wie er gehen sollte? wuerd mich doch interessieren obs geht oder nicht.... nur bin ich zu nub fuer=(



  • Bissl googln hilft immer. 😉
    ztu setw: http://www.cplusplus.com/ref/iostream/iomanip/setw.html

    Zm Eingabeproblem: Im Grunde musst du nur std::cin.good() überprüfen nach der Eingabe (also if...) und dann halt Fehler ausgeben, eingabe zurücksetzten und neu machen oder wie auch immer du es willst.



  • ju das muss ich.... aber beim besten willen steh ich grade mehr als auf dem schlauch.... hab mich die letzten tage durch millionen seiten und beitraege gewuehlt und so diese eingabe zusammengebastelt.... teilweise weiss ich garnicht was und warum ich das tue aber es funktioniert fast.....

    das problem ist das ich meine fehler immer wieder wiederhole... ich dreh mich nur im kreis.... deswegen bin ich jetzt hier.... mit der hoffnung das mir jemand nen echt guten tip gibt den ICH verwerten kann mit meinen kenntnissen... oder das jemand eine mustereingabe bastelt...aber dann bitte mit erklaerung damit ichs versteh sonst hats kein sinn^^



  • Hallo!

    Hilft Dir das weiter?

    bool ErfrageMesswert( int     i
                        , double *pWert)
    {
       bool ZahlOk = true  ;
    
       char input[80], *endptr  ;
    
       double BufferWert = 0.0 ;
    
       cout << setw(2) << i+1 << ". Messwert: "; //Messwertdeklarierung
    
       cin >> input;
    
       BufferWert = strtod( input , &endptr );
    
      // Rückgabe des Wertes nur, wenn Zahl ok
    
       if( *endptr == '\0' )
       {
          // Es wurden keine ungültigen Zeichen im String input gefunden
    
          *pWert = BufferWert;
       }
       else
       {
          cout << "Keine Zahl!" ;
    
          ZahlOk = false ;
       }
    
       return ZahlOk ;
    }
    
    int main(int argc, char* argv[])
    {
    
       int i = 0 ;
    
       double m[2] ;
    
       // Erfragen der einzelnen Messwerte. Ist eine Eingabe nicht ok, wird
       // sie erneut abgefragt.
    
       for( int i = 0 ; i < 2 ; )
       {
          if( ErfrageMesswert( i, &m[i] ) )
          {
             i++ ;
          }
       }
    
       getch();
    
       return 0;
    }
    

Anmelden zum Antworten