Du bist nicht eingeloggt.

Login

Pass

Registrieren

Community
Szene & News
Locations
Impressum

Forum / Bits und Bytes

C++ Zufallszahlen

<<< zurück   -1- -2-  
Rifleman - 40
Experte (offline)

Dabei seit 09.2003
1540 Beiträge
Geschrieben am: 01.07.2007 um 22:29 Uhr

Zitat von uwebaier:

int farbe[5][2], spieler=0, karte=0, ablauf=18;
float wert[5][2];
for (ablauf=18; ablauf>0; ablauf--)
{
farbe[spieler][karte]=1+random(4);
wert[spieler][karte]=7+random(5);
karte++;
if (karte>2)
{
spieler++;
karte=0;
}
}

Nimms mir nicht übel...aber das hast du wirklich übel vergeigt...
Die Schleife geht wie ein Berserker durch den Speicher und schreibt mehrmals über die Arraygrenzen...
Darüber hinaus verwendest du random() falsch (falls du nicht irgendwelche komischen libs verwendest oder random() überladen hast....)
Meine sieht so aus:
long int random(void);

Es sind die kleinen Dinge, die einen zum Wahnsinn treiben.

uwebaier - 36
Halbprofi (offline)

Dabei seit 06.2005
124 Beiträge

Geschrieben am: 02.07.2007 um 15:22 Uhr

Das mag sein, bin newbie in c++, würd mich sehr über irgendwelche Tutuorials mit Zufallszahlen freun. die Hilfe in c++ ist mir eher undurchsichtig....



UT3 Sucks ^^

Rifleman - 40
Experte (offline)

Dabei seit 09.2003
1540 Beiträge
Geschrieben am: 02.07.2007 um 15:59 Uhr

Zitat von uwebaier:

Das mag sein, bin newbie in c++, würd mich sehr über irgendwelche Tutuorials mit Zufallszahlen freun. die Hilfe in c++ ist mir eher undurchsichtig....

Also konkret fällt mir dazu kein Tutorial ein....aber mit deinem Programm solltest du wirklich nochmal von vorne anfangen, sonst gibt das nur ein einziges Chaos.
Hier ein paar Tips dazu:
-Arbeite mit vernünftigen Datenstrukturen. Wenn du schon mit Karten arbeitest bietet es sich auch an, eine Datenstruktur einzuführen, die eine Karte repräsentiert. Etwas wie struct Karte {...}
Damit kannst du dann komplexere Strukturen erzeugen, z.B. ein Kartenstapel als stack, oder ein Array falls die Größe bekannt ist und z.B. gemischt werden soll etc.
Das wird die das ganze wirklich erleichtern, auch wenns am Anfang vielleicht etwas komplizierter aussieht....
-Es ist wichtig mit der Dokumentation arbeiten zu können. Der random numer generator aus stdlib ist z.B. ein gutes Beispiel. Die Deklarationen solltest du auf jeden Fall verstehen können (und dann natürlich die Funktionen auch richtig verwenden können...)
-Code sollte leicht lesbar sein. Sonst versteht man seine Programme bald selber nicht mehr (Kommentare tragen dazu auch bei....). Ein 2-dim Array mit einer einzigen Schleife zu initialisieren, wie du das oben gemacht hast, ist z.B. völlig undurchsichtig. Viel besser wärem 2 Schleifen (und dann auch mit richtigen Grenzen...)

Es sind die kleinen Dinge, die einen zum Wahnsinn treiben.

uwebaier - 36
Halbprofi (offline)

Dabei seit 06.2005
124 Beiträge

Geschrieben am: 02.07.2007 um 16:10 Uhr

Also momentan hab ich nur noch 1 prob: der erste Zufall, also im Array [0][0] gibt mir Zahlen über dem Angegebenen wertebereich aus, z.B. 1092616192
....

UT3 Sucks ^^

warlock - 38
Profi (offline)

Dabei seit 11.2005
446 Beiträge

Geschrieben am: 02.07.2007 um 16:16 Uhr
Zuletzt editiert am: 02.07.2007 um 16:17 Uhr

mal ganz doof gefragt:
benutz du randomize() oder sonst ne fkt oder willst den code echt so lassen.
es werden zwar zufällig zahlen in das array geschrieben aber die sind bei jemdem programmstart die gleichen.

btw:
du weist schon das das aktuelle prog für 9 spiele ausgelegt ist du aber deine array grenzen auf 5 ausgelegt hast.

Kaffee ohne Koffein ist wie seine Schwester zu lecken. Schmeckt richtig, ist aber falsch.

uwebaier - 36
Halbprofi (offline)

Dabei seit 06.2005
124 Beiträge

Geschrieben am: 02.07.2007 um 16:34 Uhr

Zitat von warlock:

mal ganz doof gefragt:
benutz du randomize() oder sonst ne fkt oder willst den code echt so lassen.
es werden zwar zufällig zahlen in das array geschrieben aber die sind bei jemdem programmstart die gleichen.

btw:
du weist schon das das aktuelle prog für 9 spiele ausgelegt ist du aber deine array grenzen auf 5 ausgelegt hast.

du vergisst da was: ein array fängt bei 0 an, das heißt wenn da 5 steht sind es 6
und 3 * 6 ergibt 18...
aber gut, ich benutz rand, funktioniert grad.
Hab help gekriegt :D

UT3 Sucks ^^

Rifleman - 40
Experte (offline)

Dabei seit 09.2003
1540 Beiträge
Geschrieben am: 02.07.2007 um 16:37 Uhr

Zitat von uwebaier:

du vergisst da was: ein array fängt bei 0 an, das heißt wenn da 5 steht sind es 6
und 3 * 6 ergibt 18...
aber gut, ich benutz rand, funktioniert grad.
Hab help gekriegt :D

Vorsicht!
int array[5]
bedeutet, dass dein Array *5* Elemente hat. Diese sind von 0 bis 4 durchnummeriert (!)
array[5] ist außerhalb des Arrays...

Es sind die kleinen Dinge, die einen zum Wahnsinn treiben.

uwebaier - 36
Halbprofi (offline)

Dabei seit 06.2005
124 Beiträge

Geschrieben am: 02.07.2007 um 16:43 Uhr

stimmt grad vergessen ^^
Prob erst mal gelöst

UT3 Sucks ^^

warlock - 38
Profi (offline)

Dabei seit 11.2005
446 Beiträge

Geschrieben am: 02.07.2007 um 16:50 Uhr

Zitat von Rifleman:

Zitat von uwebaier:

du vergisst da was: ein array fängt bei 0 an, das heißt wenn da 5 steht sind es 6
und 3 * 6 ergibt 18...
aber gut, ich benutz rand, funktioniert grad.
Hab help gekriegt :D

Vorsicht!
int array[5]
bedeutet, dass dein Array *5* Elemente hat. Diese sind von 0 bis 4 durchnummeriert (!)
array[5] ist außerhalb des Arrays...


:daumenhoch:

Kaffee ohne Koffein ist wie seine Schwester zu lecken. Schmeckt richtig, ist aber falsch.

<<< zurück
 
-1- -2- [Antwort schreiben]

Forum / Bits und Bytes

(c) 1999 - 2026 team-ulm.de - all rights reserved - hosted by ibTEC Team-Ulm

- Presse - Blog - Historie - Partner - Nutzungsbedingungen - Datenschutzerklärung - Jugendschutz -