zufallszahlen, rand srand



  • hallo
    hab n kleines problem, muss ein prog schreiben das mir zufallszahlen ausspuckt (6 stück), die zahlen dürfen sich nicht wiederholen und müssen aufsteigend sortiert werden, ich blick irgendwie net durch, falls jemand das sich anschaun würden 🙂

    #include <stdlib.h>
    #include <iostream.h>
    #include <time.h>

    void main( void )
    {
    int i,k,c,j,l;
    int feld [6];
    int tausch;

    srand( (unsigned)time( NULL ) );

    /* Display 6 numbers. */
    for( i = 0; i <6;i++ )
    {
    c=rand ();

    feld [i]=c%49+1; //Rest Modul wird *49 genommen

    for(j = 0; j <= i-1;j++) //um Zahlenvergleich durchzuführen

    {

    if (feld [i]==feld [j])

    {

    i--;

    break;

    };

    };
    for(k = 0; k < 6 ; k++)
    {

    for (i=0; i <5; i++)
    {
    if (feld [i] > feld [i+1])
    {
    tausch=feld [i+1];
    feld[i+1]=feld[i];
    feld[i]=tausch;
    };
    };

    };
    for (l=0; l< 6; l++)
    {

    cout << feld[i] <<"\n";

    };
    };
    }



  • 1. also erstmal empfehle ich dir die c++-header zu verwenden.
    sprich:
    #include <iostream>
    #include <ctime>
    #include <cstdlib>
    2. dann bitte code-tags benutzen
    3. was gibt es überhaupt für ein problem? compilerfehler? laufzeitfehler? zugriffsfehler?



  • ich bekomm immer 6 gleiche zahlen raus???



  • erstmal :

    int main()
    {
    ...
    return 0;
    }
    

    dann fehlen nah dem überfliegen ich glaub 3 abschließende geschweifte klammern
    und die ;`s die du nach schließenden klammern setzt kannst du auch mal besser weg lassen

    z.B.

    #include <stdlib.h>
    #include <iostream.h>
    #include <time.h>
    
    int main( void )
    {
    int i,k,c,j,l;
    int feld [6];
    int tausch;
    srand( (unsigned)time( NULL ) );
    for( i = 0; i <6;i++ )
    {
     c=rand ();
     feld [i]=c%49+1; //Rest Modul wird *49 genommen
     for(j = 0; j <= i-1;j++) //um Zahlenvergleich durchzuführen
     {
      if (feld [i]==feld [j])
      {
       i--;
       break;
      }
     }
    }
    for(k = 0; k < 6 ; k++)
    {
     for (i=0; i <5; i++)
     {
      if (feld [i] > feld [i+1])
      {
       tausch=feld [i+1];
       feld[i+1]=feld[i];
       feld[i]=tausch;
      }
     }
    }
    for (int y=0;y<6;y++)
    {
     cout<<feld[y]<<endl;
    }
    Sleep(2000);
    return 0;
    }
    


  • dankeschön, is natürlich peinlich die klammern zu vergessen 🙂

    ps. was woltest du mit SLEEP erreichen?



  • @Snoppy9134:
    Bzg. Sleep(). Ich denke mal, dass das Programm bevor es sich endgültig beendet 2000 Milli-Sekunden einschläft, oder anders gesagt, dass es ganz am Ende nochmal 2 Sekunden wartet bevor es sich beendet.

    Caipi



  • dafür nimmt man cin.get(). und bitte, bitte die iostream inkludieren! und nicht die iostream.h! da gibt es wesentliche unterschiede!



  • jaja... ich hab nur fix sleep reingeknallt weil ich ja noch testen musste und kein bock hatte extra cmd auf zu machen und cin.get() fiel mir grad nicht ein 😕



  • Warum nimmt man dafür cin.get()? Macht doch etwas völlig anderes? 😕

    😉

    (Wobei ich in diesem Falle nichts verwenden würde, da ich die Programme sowieso immer aus der Konsole ausführe :))

    Caipi



  • na ja weil cin.get() auf einen tastendruck wartet und sleep() einfach so nach 2 sekunden implizit (quasi) das programm beendet



  • cin.get() wartet auf den druck einer taste bevor es weiter geht und sleep war nur ne fixe lösung damit ich seh ob was ausgegeben wird 😉



  • hallo wollte nur mal kurz wisse

    kann ich mit hilfe von rand eine zufällige reihenfolge festlegen?

    #include <iostream>
    #include <cstdlib>
    #include <time.h>
    using namespace std;

    int main (void)
    {

    int n[9];

    n[0]=1;
    n[1]=1;
    n[2]=1;
    n[3]=1;
    n[4]=1;
    n[5]=1;
    n[6]=1;
    n[7]=1;
    n[8]=0;

    int i,y,x;

    srand( (unsigned)time( NULL ) );

    do
    {

    for(i=0;i<9;i++)
    {

    x=rand();
    y=x%n[i];
    cout<<y<<endl;

    }

    }
    while(i==8);

    return(0);
    }

    die null muss immer zuffälig zwischen den 9 stellen (8 einser und eine null) rauskommen, dass prog stürzt aber immer an der 8 stelle ab, ich nehme an der fehler liegt an "y=x%n[i];" kann mir einer n tipp geben?



  • snoopy9134 schrieb:

    ich nehme an der fehler liegt an "y=x%n[i];" kann mir einer n tipp geben?

    n[8] ist 0 --> y=x%0 --> crash



  • snoopy9134 schrieb:

    #include <time.h>

    #include <ctime>
    


  • moin,
    da dich hier jeder nur wegen syntaktischen kram anmacht: dein random nimmt die systemzeit als randomseed und da sich diese nicht in der kurzen zeit ändert, ändern sich auch deine zufallszahlen nicht.


Anmelden zum Antworten