Zufallszahlen



  • Hi Leute,

    ich sitze grad vor ein paar Übungsaufgaben und komme irgendwie nicht weiter.

    Die Aufgabe lautet :

    In einem Feld messwerte[100] sollen über eine Schnittstelle aktuell erfasste Messwerte eingelesen und ausgewertet werden.
    Erstellen sie das Projekt messwert.bpr unter Beachtung der nachfolgenden Forderungen :

    a) Erstellen sie eine Funktion input() zu Erfassung der Messwerte. Die Messwerte sollten zur Vereinfachung über einen Zufallsgenerator erzeugt werden.
    b) Erstellen sie die funktionen min(), max() und mittelwert() zu Ermittlung des kleinesten, größtes und durchschnittlichen Messwerts.
    c) Rufen sie in der Hauptfunktion main() die jeweiligen Funkionen auf und geben sie die Ergebnisse formartiert an der Konsole aus.

    Wie ihr in der Überschrift lesen könnt, hab ich ein Problem mit den Zufallszahlen.
    Ich weiß, dass man diese mit dem Befehl "random" erstellen kann, dennoch ist es mir ein Rätsel wie ich diese in die einzelnen Arrays kriegen soll.



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • dave2k schrieb:

    Wie ihr in der Überschrift lesen könnt, hab ich ein Problem mit den Zufallszahlen.
    Ich weiß, dass man diese mit dem Befehl "random" erstellen kann, dennoch ist es mir ein Rätsel wie ich diese in die einzelnen Arrays kriegen soll.

    Mit einer Schleife vielleicht?! ⚠

    Im übrigen hast Du nur ein Array.

    Zudem hast Du (offenbar) kein Problem mit Zufallszahlen, sondern eher mit Arrays... (Titel falsch) 😉



  • So unnötige Kommentare kannst du dir auch sparen. ⚠

    Ich habe mich verschrieben. Ich meinte 100 Arrayelemente. -.-

    Ich jedem Element eine Zufallszahl zuordnen.

    Und das mit der Schleife ist mir ebenfalls bewusst.
    Mir geht es aber nicht um die Schleife sondern um die Initialisierung der einzelnen Elemente!



  • #include <algorithm>
    #include <numeric>
    #include <cstdlib>
    #include <ctime>
    
    int messwerte[100];
    int min;
    int max;
    int avg;
    
    int main()
    {
    	std::srand( std::time( 0 ) );
    	std::generate( messwerte, messwerte+100, std::rand );
    
    	min = *std::min_element( messwerte, messwerte+100 );
    
    	max = *std::max_element( messwerte, messwerte+100 );
    
    	avg = std::accumulate( messwerte, messwerte+100, 0 ) / 100;
    }
    


  • HelferInDerNot schrieb:

    #include <algorithm>
    #include <numeric>
    #include <cstdlib>
    #include <ctime>
    
    int messwerte[100];
    int min;
    int max;
    int avg;
    
    int main()
    {
    	std::srand( std::time( 0 ) );
    	std::generate( messwerte, messwerte+100, std::rand );
    
    	min = *std::min_element( messwerte, messwerte+100 );
    
    	max = *std::max_element( messwerte, messwerte+100 );
    
    	avg = std::accumulate( messwerte, messwerte+100, 0 ) / 100;
    }
    

    [C++ Fehler] Unit1.cpp(8): E2356 Redeklaration von 'min<>(const _T &,const _T &)' mit anderem Typ
    [C++ Fehler] Unit1.cpp(8): E2449 Größe von 'min<>(const _T &,const _T &)' unbekannt oder Null
    [C++ Fehler] Unit1.cpp(9): E2356 Redeklaration von 'max<>(const _T &,const _T &)' mit anderem Typ
    [C++ Fehler] Unit1.cpp(9): E2449 Größe von 'max<>(const _T &,const _T &)' unbekannt oder Null
    [C++ Fehler] Unit1.cpp(17): E2335 Überladene Funktion 'min' ist in diesem Kontext mehrdeutig.
    [C++ Fehler] Unit1.cpp(19): E2335 Überladene Funktion 'max' ist in diesem Kontext mehrdeutig.
    [C++ Fehler] Unit1.cpp(24): E2190 Unerwartetes }



  • Sieht nach einem veralteten Compiler aus. Ansonsten benenn einfach mal die Variablen max und min um. Man sollte diese eh nicht global erzeugen.



  • dave2k schrieb:

    So unnötige Kommentare kannst du dir auch sparen. ⚠

    Das war 'ne super Antwort!!

    dave2k schrieb:

    Ich habe mich verschrieben. Ich meinte 100 Arrayelemente. -.-

    Kann ich ja nicht riechen.

    dave2k schrieb:

    Und das mit der Schleife ist mir ebenfalls bewusst.

    Kann ich ja nicht riechen, Du Honk.
    Gesagt hast Du davon kein Ton. 😡

    dave2k schrieb:

    Mir geht es aber nicht um die Schleife sondern um die Initialisierung der einzelnen Elemente!

    Häh?

    int array[100];
    
    array[3] = 5000;  // Weist dem 4. Element den Wert 5000 zu
    

    Jetzt klar?! 😕



  • Sgt. Nukem schrieb:

    int array[100];
    
    array[3] = 5000;  // Weist dem 4. Element den Wert 5000 zu
    

    Jetzt klar?! 😕

    Ich soll sie ja nicht selber Initialisieren sondern über random generieren lassen.



  • Dann nutze das wabbelige Ding zwischen Deinen Ohren doch einfach mal! 💡

    Ersetze halt "5000" mit dem was Du willst. random() z.B.... 🙄



  • Hab´s jetzt hingekriegt. Mein Prog. sieht jetzt so aus :

    //---------------------------------------------------------------------------
    
    #pragma hdrstop
    #pragma argsused
    #include <conio.h>
    #include <iostream.h>
    #include <stdlib.h>
    
    //---------------------------------------------------------------------------
    
    input(double y[100])
    {
    randomize();
    for (int x=0; x<100;x++)
    {
    y[x] = rand();
    }
    }
    
    double min(double y[100])
    {
       double min = y[0];
       for (int x=0; x<100;x++)
          {
            if (y[x] < min)
            min = y[x];
          }
      return min;
    }
    
    double max(double y[100])
    {
       double max = y[0];
       for (int x=0; x<100;x++)
          {
            if (y[x] > max)
            max = y[x];
          }
      return max;
    }
    
    double mit(double y[100])
    {
       double mit = 0;
       for (int x=0; x<100;x++)
          {
          mit = mit+y[x];
          }
    
          mit=mit/100;
      return mit;
    }
    
    int main()
    {
    
    double messwerte[100];
    
    input(messwerte);
    
    for (int x=0;x<100;x++)
    {
    cout << x+1 <<". Messwert : " << messwerte[x] << endl;
    }
    
    cout << endl <<"Kleinster Messwert : "  << min(messwerte);
    cout << endl <<"Groesster Messwert : "  << max(messwerte);
    cout << endl <<"Mittelwert d. Messwerte : "  << mit(messwerte);
    
    getchar();
    
            return 0;
    }
    //---------------------------------------------------------------------------
    


  • Sieht gut aus, nur solltest du statt "randomize()" lieber "srand(time(NULL))" verwenden, um den Zufalls-Generator zu initialisieren.


Anmelden zum Antworten