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 lassenz.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.