Reicht mit while?
ein Programm für Lotto zahl ( 6 aus 49 zu ziehen) . ich habe das Programm mit while ( 3 Mal)gerschreiben. geht das oder soll ich mit andere Vriante schreiben wenn a welche.ß
danke
10 Antworten
hab das Programm sleb gemacht, geht so? ich versuche noch kürze zumachen. aber gibt es ander Möglichkeit das außer while( habe 3 mal while; denke ich zu viel) zu mahchen.
das programm rechnet nach Angaber der Benutzer, aslo beliebige Zhalen eingeben, und bleibige Zhalen ziehen.
Um die Anzahl der Möglichkeiten beim Lotto "6 aus 49" per Programm auszugeben, braucht man weder eine WHILE-Schleife noch eine Berechnung, weil es nur eine Zahl als Ergebnis gibt: 13.983.816. Ein C-Programm dazu sieht z. B. einfach so aus:
#include <stdio.h>
main {
printf("Es gibt 13.983.816 Möglichkeiten, ")
printf("aus 49 Zahlen 6 Zahlen auszuwählen\n");
}
Soll dagegen die Anzahl der Möglichkeiten, k Zahlen aus n Zahlen auszuwählen, berechnet und ausgegeben werden, und soll der Benutzer k und n eingeben können, so gibt es n*(n-1)*...*(n-k+1)/(2*3*...*k) Möglichkeiten und das C-Programm dazu könnte so aussehen:
#include <stdio.h>
int main() {
int k=0, n=0;
printf("Wie viele Zahlen sollen ausgewählt werden?\n");
printf("Bitte positive ganze Zahl eingeben: ");
scanf("%d", &k);
if(k<=0){
printf("Fehler: Eingegebene Zahl war nicht positiv\n");
return 0;
}
printf("Aus wie vielen Zahlen sollen %d", k);
printf(" ausgewählt werden?\n");
printf("Bitte positive ganze Zahl eingeben: ");
scanf("%d", &n);
if(n<=0){
printf("Fehler: Eingegebene Zahl war nicht positiv\n");
return 0;
}
// k aus n berechnen
int i=0, res=1;
while(i<k) {
res=res*(n-i)/(i+1);
++i;
}
printf("Es gibt %d Möglichkeiten, ", res);
printf("aus %d Zahlen %d Zahlen auszuwählen\n", n, k);
return 0;
}
hast du dein Reimund , dein Programm geprüft? fällt dir etwas auf? wenn ja bitte mir beschied sagen. ich lasse dich das heruaszu finden
hier sit das gesamt code, ich versuche zu kürzen, aber gern jemand besser zu machen;
#include <stdio.h>
#include <stdlib.h>
int main()
{
int lotto,zahl, i;
double produktlotto, produktzahl, binominalkoffizient,differenz;
i=1,lotto=0 ,zahl=0,produktlotto=1, produktzahl=1;
double produktdiffierenz;
printf("eine Zahl einegeben :");
scanf("%d",&lotto);
while(i<=lotto)
{
produktlotto=produktlotto*i;
i=i+1;
}
printf("Lotto produnkt %.f \n",produktlotto);
printf("AnZahl der ausgewählten Zahlen eingben :");
scanf("%d",&zahl);
i=1;
while(i<=zahl)
{
produktzahl=produktzahl*i;
i=i+1;
}
printf("Lotto produnkt %.f \n", produktzahl);
differenz =lotto-zahl;
printf("Differenz %.f \n", differenz);
i=1;
produktdiffierenz=1;
while(i<=differenz)
{
produktdiffierenz= produktdiffierenz*i;
i=i+1;
}
binominalkoffizient=produktlotto/(produktzahl*produktdiffierenz );
printf("Die anzahl der Möglich´keiten %.f",binominalkoffizient);
return 0;
}
Du brauchst einen Zufallszahlengenerator und ein Array, in das du die gezogenen Zahlen füllst.
Der Pseudocode deiner Schleife lautet
Solange die Anzahl an Arrayelementen kleiner als 6 ist
Generiere eine Zufallszahl 1..49
Zufallszahl noch nicht im Array?
Ja: Füge die Zufallszahl dem Array hinzu
Dann brauchst du fünf while schleifen, bei denen du immer wieder eine Zufallszahl ziehst, wenn die zuvor gezogene bereits gezogen wurde.
Du kannst auch die Zufallszahlen in eine Zeichenkette schreiben, z. B. so:
;5;18;9;36;
Dann suchst du mit einer Zeichenkettenfunktion in der Zeichenkette nach deiner Zahl ";<deine Zahl>;", um festzustellen, ob du die Zahl bereits gezogen hast.
hast du mein code geshen? ich habe es gesichkt um jemand zu modifiziern und kürzer machen, geht das?also mein code bearbeiten und kürze machen.
ic habe einmal den code als Bild und einmal als code. das heisst du kannst den code gucken und verarbeiten
Es ist völlig egal, wie du das verwirklichst.
Hauptsache es ist :
- übersichtlich
- effektiv und schnell
- macht fehlerfrei genau das was es soll
- hat Fehlerbehandlungen, falls der Anwender was unsinniges eingibt
usw.
*wenn der Anwender was unsinniges eingibt
es ist nur eine Frage der Zeit ;)
ich habe noch kein array , geht monmentan uach mit while oder schlecht?ich möchte immer kuzre Programme machn, sie sehen viel besser aus