[C/C++] Problem bei einem Programm

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Richie, 27. April 2008 .

Schlagworte:
  1. 27. April 2008
    Problem bei einem Programm

    Hallo
    ich soll ein Programm schreiben welches den Mittelwert von mehreren Zufallszahlen ausgibt.
    Dies mit 3 Schleifen, For, While, Do While.

    Nun habe ich schon angefangen.

    Header
    Code:
    #include <iostream> // Bibliothek für Ein- und Ausgabe
    #include <ctime> // Bibliothek, wo die Methode zu Erstellung der Zufallszahlen enthalten ist
    #include <cstdlib> // Bibliothek wo sich der befehl exit(0)befindet
    
    
    using std::cout;
    using std::cin;
    using std::endl;
    
    
    class mittelwert {
     private:
    
     int a; // Variable zur Berechnung von Zufallszahlen vom Datentyp Integer zwischen 0 und 100
     int b; // Variable zur Berechnung von Zufallszahlen vom Datentyp Integer zwischen 0 und 100
     
     int anzahldurchlauf ; // gibt die Anzahl der Durchläufe für die 3 verschiedenen Schleifentypen an
    
    
     int zufallint ;
     int mittelwertint ;
     int zwischenint;
     
    
     float mittelwertfloat ;
     float zwischenfloat;
    
     
     double mittelwertdouble ;
     double zwischendouble;
    
     int zaehler; // ist der Zähler für die Durchläufe der Schleifen
     
    
    
     public:
    
     mittelwert(); // Konstruktor
    
    
     //Methoden zur Berechnung der einzelnen Zufallszahlen
     int berechne_zufall_int(); // Methode zur Berechnung der Zufallszahlen vom Datentyp Integer + Mittelwert
     float berechne_zufall_float(); // Methode zur Berechnung der Zufallszahlen vom Datentyp Float + Mittelwert
     double berechne_zufall_double(); // Methode zur Berechnung der Zufallszahlen vom Datentyp Double + Mittelwert
    
     char menuetext(); // Aufforderung für den Benutzer, sich seine Rubrik zu wählen
     int menuauswahl();// Auswahlmenu für den Benutzer
    
     int anzahlabfrage(); // fragt die Anzahl nach den Durchläufen der Schleife ab
    
    }
    zufalls.cpp+
    Code:
    #include "zufallszahlen.h"
    
    
    
    mittelwert::menuetext () 
    
    {
    cout << "Willkommen \n\n" << endl;
    cout << "Mit Hilfe dieses Programmes koennen Sie den Mittelwert einer Zufallszahl von 3 verschiedenen Datentypen berechnen \n\n" << endl;
    cout << "Druecken Sie zur Berechnung des Mittelwertes vom Datentyp \" Integer\" die 1 !" << endl;
    cout << "Druecken Sie zur Berechnung des Mittelwertes vom Datentyp \" Float \" die 2 ! " << endl;
    cout << "Druecken Sie zur Berechnung des Mittelwertes vom Datentyp \" Double \" die 3 !\n" << endl << endl ;
    cout << "Wenn Sie das Programm verlassen moechten Druecken Sie die Zahl 0 !" << endl << endl ;
    }
    
    mittelwert::menuauswahl ()
    {
     if (a =1)
     {
     cin >> a;
     mittelwert::anzahlabfrage();
     mittelwert::berechne_zufall_int();
     mittelwert::berechne_zufall_float();
     mittelwert::berechne_zufall_double();
     }
     
     else if (a = 0)
     {
     cin >> a;
     exit(0);
     }
    }
    
    
    int mittelwert::anzahlabfrage()
    {
    
     cout << "Sie möchten einen Mittelwert berechnen, \n waehlen Sie wie oft die Zufallszahl erstellt werden soll : " ;
     cin >> mittelwert::anzahldurchlauf ;
    
    
    }
    
    
    int mittelwert::berechne_zufall_int() 
    {
    
     time_t sec;
     time(&sec); //Initialisierung von rand(), um
     srand ((unsigned)sec); // echte Zufallszahlen erhalten
    
     a = 0 ; // setzt a auf 0
     b = 1; // setzt b auf 1
     
     //while Schleife
     zufallint = 0;
     zaehler = 1;
    
     while (zaehler <= mittelwert::anzahldurchlauf)
    
     {
     
     zufallint = b + (rand() % (a - b + 1)); // Erzeugung der Zufallszahlen, wird in zufallint geschrieben
    
     zwischenint = zwischenint + zufallint ; // addiert die Zufallszahl mit dem Mittelwert
    
     mittelwertint = zwischenint / anzahldurchlauf; // Dividiert den neuen Mittelwert durch die Durchläufe der Schleife
    
     zaehler++;
     }
    
     cout << "Der Mittelwert der Zufallszahl :" << zwischenint << endl;
     cout << "beträgt : " << mittelwertint ;
     
    }
    
    float mittelwert::berechne_zufall_float() 
    {
    
     time_t sec;
     time(&sec); //Initialisierung von rand(), um
     srand ((unsigned)sec); // echte Zufallszahlen erhalten
    
     mittelwertfloat = 0; //setzt den mittelwerfFoart auf 0
     a = 0; // setzt a auf 0
     b = 1; // setzt b auf 1
     
     
     //for Schleife
     for (zaehler = 1 , zaehler <= mittelwert::anzahldurchlauf, zaehler++ ; )
     
     {
     zufallint = b + (rand() % (a - b + 1)); // Erzeugung der Zufallszahlen, wird in zufallint geschrieben
     
     mittelwertfloat = mittelwertfloat + zufallint ; // addiert die Zufallszahl mit dem Mittelwert
    
     }
    
     mittelwertfloat = mittelwertfloat / anzahldurchlauf; // Dividiert den neuen Mittelwert durch die Durchläufe der Schleife
    
    }
    
    double mittelwert::berechne_zufall_double() 
    {
     
     a = 0; // setzt a auf 0
     b = 10; // setzt b auf 10
     zaehler = 1; // gibt den Startzaehler an
    
     time_t sec;
     time(&sec); //Initialisierung von rand(), um
     srand ((unsigned)sec); // echte Zufallszahlen erhalten
    
    
     do
     {
     
    
     zufallint = b + (rand() % (a - b + 1)); // Erzeugung der Zufallszahlen, wird in zufallint geschrieben
     
     mittelwertdouble = mittelwertdouble + zufallint ; //addiert immer die Zufallszahl auf Mittelwertdouble
     
     }
     while (zaehler <= mittelwert::anzahldurchlauf);
     
    
     mittelwertdouble = mittelwertdouble / anzahldurchlauf;
    
    }
    main.cpp
    Code:
    #include "zufallszahlen.h"
    #include "zufallszahlen.cpp"
    
    int main () {
    
    
     mittelwert::auswahlmenue;
    
     
    
    }
    die main ist noch unvollständig das weiß ich.
    aber ich habe immer noch 4 fehler beim compilieren sind.
    das sind diese hier

    Code:
    1>------ Erstellen gestartet: Projekt: Praktikum4, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>zufallszahlen.cpp
    1>c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\zufallszahlen.cpp(7) : error C2556: 'mittelwert mittelwert::menuetext(void)': Überladene Funktion unterscheidet sich nur hinsichtlich des Rückgabetyps von 'char mittelwert::menuetext(void)'
    1> c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\zufallszahlen.h(46): Siehe Deklaration von 'mittelwert::menuetext'
    1>c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\zufallszahlen.cpp(7) : error C2371: 'mittelwert::menuetext': Neudefinition; unterschiedliche Basistypen
    1> c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\zufallszahlen.h(46): Siehe Deklaration von 'mittelwert::menuetext'
    1>c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\zufallszahlen.cpp(17) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
    1>c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\zufallszahlen.cpp(90) : error C2143: Syntaxfehler: Es fehlt ';' vor ')'
    1>Das Buildprotokoll wurde unter "file://c:\Users\Richie\Documents\Visual Studio 2005\Projects\Praktikum4\Praktikum4\Debug\BuildLog.htm" gespeichert.
    1>Praktikum4 - 4 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    ich kann damit nicht viel anfangen
    wäre nett wenn ihr mir helft.
     
  2. 27. April 2008
    AW: Problem bei einem Programm

    der header wird doppelt inkludiert
    einmal in main und einmal in zufallszahlen.cpp

    mfg tobZel
     
  3. 27. April 2008
    AW: Problem bei einem Programm

    du hast bei den funtkionen menuetext und menuauswahl im header als rückgabetyp char und int angegeben, jedoch bei der implementation keinen rückgabe typ (also void) hast.. und das passt nich zusammen.. entweder oben bei beiden funktionen void hinschreiben oder nen rückgabewert definieren..

    außerdem hast du irgendwo um zeile 90 nen ";" vergessen...

    mfg

    //edit..

    deine forschleife ist falsch
    Code:
    for (zaehler = 1 , zaehler <= mittelwert::anzahldurchlauf, zaehler++ ; )
    muss
    Code:
    for (zaehler = 1 ; zaehler <= mittelwert::anzahldurchlauf; zaehler++ )
    sein
     
  4. 27. April 2008
    AW: Problem bei einem Programm

    okay jetzt sehen die fehler so aus

    Code:
    1>Kompilieren...
    1>main.cpp
    1>c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\zufallszahlen.h(6) : error C2143: Syntaxfehler: Es fehlt ';' vor 'using'
    1>c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\zufallszahlen.h(11) : error C2011: 'mittelwert': 'class' Typneudefinition
    1> c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\zufallszahlen.h(11): Siehe Deklaration von 'mittelwert'
    1>c:\users\richie\documents\visual studio 2005\projects\praktikum4\praktikum4\main.cpp(12) : fatal error C1004: Unerwartetes Dateiende gefunden.
    1>Das Buildprotokoll wurde unter "file://c:\Users\Richie\Documents\Visual Studio 2005\Projects\Praktikum4\Praktikum4\Debug\BuildLog.htm" gespeichert.
    1>Praktikum4 - 3 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    wo soll denn bitte vor USING ein ; fehlen ?
     
  5. 27. April 2008
    AW: Problem bei einem Programm

    was mir mit meinen müden augen noch auffällt:
    Code:
    class
    {
    }
    
    zu
    Code:
    class
    {
    };
    
    mfg tobZel
     
  6. 27. April 2008
    AW: Problem bei einem Programm

    wenn ich das semikolon setze erhalte ich jedoch 25 weitere fehler Oo
     
  7. 28. April 2008
    AW: Problem bei einem Programm

    Das is außerdem auch noch falsch:

    Code:
     mittelwert::anzahlabfrage();
     mittelwert::berechne_zufall_int();
     mittelwert::berechne_zufall_float();
     mittelwert::berechne_zufall_double();
    Die Funktionen sind ja nicht statisch oder so, deshalb darfst du den Klassennamen nicht hinschreiben:

    Code:
     anzahlabfrage();
     berechne_zufall_int();
     berechne_zufall_float();
     berechne_zufall_double();
    Und wie meine Vorderleute schon sagten, das ";" am Ende der Klassendefinition is Pflicht..

    Außerdem wäre es von Vorteil, deine header-Datei mit Include-Guards auszustatten (verhindert mehrfaches Includen):

    Code:
    #ifndef _INCLUDED_ZUFALL_HPP_
    #define _INCLUDED_ZUFALL_HPP_
    
    // hier dein Code für die HEader-Datei
    
    #endif
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.