-
Da ich im Netz auf nichts Ähnliches gestoßen bin stelle ich mein kürzlich erstelltes Programm allen zur Verfügung. Hier werden 6 Pseudozufallszahlen
generiert, die jeweils nur einmal vorkommen.
Da ich selbst oft die Hilfe von anderen benötige dachte ich mir mein Programm auch veranschaulichen zu können. MfG Soul-ya( Mustapha Merabti)
zu stolz auf mein Progrämmchen um's namenlos auszusetzen
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
#include "stdafx.h" #include <stdio.h> #include <iostream> #include <time.h> void main() { system("title 6er Lotto"); int zahl[6]; srand(time(NULL)); // ab jetzt können pseudozufallszahlen generiert werden for(int x=0;x<6;x++) { zahl[x]=rand()%49; // generieren einer pseudozufallszahl } /* ab hier werden die arrays solange sie ungleich sind miteinander verglichen, sollten sie gleich werden wird anstelle des zahl[x]-arrays ein neuer wert generiert*/ int ok=0; while(ok==0) { for(int y=0;y<5;y++) { for(x=0;x<6;x++) { if(y==x) y++; if(zahl[y]!=zahl[x]) ok=1; // hier wird die bedingung der while-schleife verändert else { zahl[x]=rand()%49; ok=0; } } } } //hier fängt die ausgabe an for(x=0;x<6;x++) { printf("%i",zahl[x]+1); } system("pause"); }
-
03.10.09 19:39 #2
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
Hi. Willkommen!
Deine Suchfähigkeiten sind offenbar stark verbeserungswürdig...
http://www.tutorials.de/forum/c-c/32...vermeiden.html
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
-
04.10.09 12:37 #4jsendrow Tutorials.de Gastzugang
Dein Ansatz ist nichteinmal gut, geschweige denn "besser". Genaugenommen funktioniert er nicht einmal.
Logikfehler 1: Wenn Du zwei gleiche Zahlen findest setzt du OK = 0, testest aber weiter anstatt die Schleife abzubrechen. Ist der folgende Test dann wieder ungleich setzt Du ok = 1. Fazit: Dein Algo kann gleiche Zahlen nur erkennen wenn diese im letzten Eintrag des Arrays sind.
Logikfehler 2: Die äußere Schleife ist sinnlos, praktisch läuft nur die innere Schleife einmal durch von 0 - 5. Warum? Naja, schau mal hier:
if(y==x) y++;
Dadurch passiert folgendes in der inneren Schleife.
1. Durchlauf: x = 0, y = 0. Gleich, also y++;
2. Durchlauf x = 1, y = 1 (durch y++). Gleich, also y++;
3. Durchlauf x = 2, y = 2 (durch y++). Gleich, also y++;
4. Durchlauf x = 3, y = 3 (durch y++). Gleich, also y++;
5. Durchlauf x = 4, y = 4 (durch y++). Gleich, also y++;
6. Durchlauf x = 5, y = 5 (durch y++). Gleich, also y++;
So, jetzt ist die innere Schleife genau einmal durchlaufen und y hat den Wert 6, also bricht die äußere Schleife ab.
Btw, Beim letzten Durchlauf der inneren Schleife hat Y den Wert 6, greift also auf undefinierten Speicher zu. (array ist 0 - 5)
Fazit: Der Algo funktioniert nicht, er vergleicht lediglich die benachbarten Zahlen auf Gleichheit.
Beweis: Gibt mal folgendes Array vor:
int zahl[6] = { 1, 2, 1, 2, 1, 2 };
Und lass das durch deinen Algo laufen. Du wirst sehen das am Ende immer noch 1,2,1,2,1,2 im Array steht...
-
Hallo,
wie wäre es hiermit?
Code c:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
#include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int zahlen[6]; // Die Lottozahlen bool zahl_benutzt[49]; // Gibt für jede Zahl 0-48 an, ob sie bereits in zahlen gespeichert ist int zahl; // Zum Speichern einer Zufallszahl int i; // Zählvariable // Initialisierung von zahl_benutzt for (i = 0; i < 49; ++i) { zahl_benutzt[i] = false; } // Initialisierung des PRNG srand(time(NULL)); // Ziehung der Zahlen i = 0; while (i < 6) { zahl = rand() % 49; // Zufallszahl 0-48 erzeugen if (!zahl_benutzt[zahl]) { // Wenn die Zahl noch nicht in zahlen gespeichert ist: zahlen[i] = zahl; // Die Zahl speichern und... zahl_benutzt[zahl] = true; // ...als bereits benutzt markieren. i++; } } // Ausgabe for (i = 0; i < 6; ++i) { printf("%i ", zahlen[i] + 1); } return 0; }
Grüße, Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
-
-
Geändert von Soul-ya (04.10.09 um 17:11 Uhr)
-
jetzt habe ich durch eure kritik mein programm vervollständigen können. ich nehme äußert ungern programme anderer und noch viel weniger mag ich boolsche variablen. wobei das andere programm mir echt gut gefällt!
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
#include "stdafx.h" #include <stdio.h> #include <iostream> #include <time.h> void main() { system("title 6er Lotto"); int zahl[6]/*={1,2,1,2,1,2}*//*die probe*/,x,ok=0; srand(time(NULL)); for(x=0;x<6;x++) { zahl[x]=rand()%49;// die anweisung muss mann zur probe ausklammern } while(ok==0) { for(int y=0;y<6;y++) { for(x=0;x<5;x++) { if(y==x) x++; if(zahl[y]!=zahl[x]) ok=1; else { zahl[x]=rand()%49; ok=0; break; } } if(ok==0) break; } } for(x=0;x<6;x++) { printf("%i ",zahl[x]+1); } system("pause"); }Geändert von Soul-ya (04.10.09 um 19:07 Uhr)
-
04.10.09 19:02 #10jsendrow Tutorials.de Gastzugang
-
-
04.10.09 19:17 #12jsendrow Tutorials.de Gastzugang
-
-
04.10.09 19:52 #14
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
Hi.
Evlt. solltest du dich aber mal entscheiden ob das C oder C++ sein soll?
Der <iostream> Header weist auf C++ hin, wobei das dein kein korrektes C++ Programm ist. Die main Funktion muss int zurückgeben und Header der C Bibliothek werden ohne die Endung .h und mit dem Präfix "c" eingebunden. Also statt <stdio.h> <cstdio>.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
detailiertere statements sind oftmals effektiver...(als ob ich weiß was davon jetzt nicht c++ ist und was davon daraus ein c programm macht) was an dem programm macht daraus kein korrektes c++ programm
ps: den iostream header benutze ich nur um system("pause") benutzen können.
mfg soul-ya
Ähnliche Themen
-
Zufallszahlen
Von WorldRacer im Forum C/C++Antworten: 2Letzter Beitrag: 13.06.08, 23:19 -
zufallszahlen
Von kurcob im Forum Flash PlattformAntworten: 2Letzter Beitrag: 25.05.08, 11:07 -
Zufallszahlen
Von Gen-Chan im Forum PHPAntworten: 1Letzter Beitrag: 16.04.05, 21:57 -
zufallszahlen
Von mihawk im Forum PHPAntworten: 3Letzter Beitrag: 17.05.04, 17:56 -
zufallszahlen von 1-6
Von computers im Forum Visual Basic 6.0Antworten: 7Letzter Beitrag: 20.01.04, 09:33



2Danke

Zitieren


kollege, oder
Login





