C :: Aufgabe #197 :: Lösung #2
2 Lösungen
#197
Durchnummerierung aller möglichen geordneten Ziehungsergebnisse bei 6 aus 49
Anfänger - C
von hollst
- 06.09.2018 um 10:28 Uhr
Beim Lotto 6 aus 49 gibt es bekanntlich 13.983.816 mögliche (geordnete) Ziehungsergebnisse (49 über 6).
Schreibe ein Programm, das jeder dieser Möglichkeiten eine natürliche Zahl zuordnet, also
1 2 3 4 5 6 -> 1
1 2 3 4 5 7 -> 2
...
...
44 45 46 47 48 49 -> 13.983.816
Viel Spaß!
Schreibe ein Programm, das jeder dieser Möglichkeiten eine natürliche Zahl zuordnet, also
1 2 3 4 5 6 -> 1
1 2 3 4 5 7 -> 2
...
...
44 45 46 47 48 49 -> 13.983.816
Viel Spaß!
#2
von manu (50 Punkte)
- 31.05.2019 um 23:20 Uhr
#include<stdio.h>
#include<stdlib.h>
int A=49; //Maximale Zahl im Wurf (49)
int f_dopZahl(int a, int b, int c, int d, int e, int f);
int f_ausgabe(int a, int b, int c, int d, int e, int f);
int main()
{
int ziehung[6];
int x0, x1, x2, x3, x4, x5, x6;
//Startaufstellung der Ziehung 1,1,1,1,1,1
for (x0=0; x0<6; x0++)
ziehung[x0] = 1;
//Die erste Zahl läuft hoch
for(x0=0; x0<A; x0++)
{
//Die zweite Zahl läuft hoch
for(x1=0; x1<A; x1++)
{
//Die dritte Zahl läuft hoch
for(x2=0; x2<A; x2++)
{
//Die vierte Zahl läuft hoch
for(x3=0; x3<A; x3++)
{
//Die fünfte Zahl läuft hoch.
for(x4=0; x4<A; x4++)
{
//Die sechste Zahl läuft hoch.
for(x5=0; x5<A; x5++)
{
//Ausgabe der gesamten Ziehung
f_ausgabe(ziehung[0], ziehung[1], ziehung[2], ziehung[3], ziehung[4], ziehung[5]);
ziehung[5]++;
}
ziehung[5]=1;
ziehung[4]++;
}
ziehung[4]=1;
ziehung[3]++;
}
ziehung[3]=1;
ziehung[2]++;
}
ziehung[2]=1;
ziehung[1]++;
}
ziehung[1]=1;
ziehung[0]++;
}
ziehung[0]=1;
}
//Ausgabe der Ziehung
int f_ausgabe(int a, int b, int c, int d, int e, int f)
{
int ziehung[6];
ziehung[0]=a;
ziehung[1]=b;
ziehung[2]=c;
ziehung[3]=d;
ziehung[4]=e;
ziehung[5]=f;
int y;
int doppelt=0;
int nummer;
//Überprüfen ob die Ziehung keine doppelten Zahlen hat.
doppelt=f_dopZahl(ziehung[0], ziehung[1], ziehung[2], ziehung[3], ziehung[4], ziehung[5]);
//Ausgabe wenn keine Zahl doppelt vorhanden ist.
if (doppelt==0)
{
for (y=0; y<6; y++)
{
printf("%i ", ziehung[y]);
}
//Ausgabe der Nummer.
if (ziehung[0]==1&&ziehung[1]==1&&ziehung[2]==1&&ziehung[3]==1&& ziehung[4]==1&&ziehung[5]==1)
nummer=0;
nummer++;
printf("\t-> %i",nummer);
printf("\n");
}
return 0;
}
//Funktion zum Ausschluss doppelter Zahlen.
int f_dopZahl(int a, int b, int c, int d, int e, int f)
{
int ziehung[6];
ziehung[0]=a;
ziehung[1]=b;
ziehung[2]=c;
ziehung[3]=d;
ziehung[4]=e;
ziehung[5]=f;
int x;
//Vergleich Ziehung 1 auf doppeltes vorkommen.
for (x=1; x<6; x++)
{
if (ziehung[0]==ziehung[x])
return 1;
}
//Vergleich Ziehung 2 auf doppeltes vorkommen.
for (x=2; x<6; x++)
{
if (ziehung[1]==ziehung[x])
return 1;
}
//Vergleich Ziehung 3 auf doppeltes vorkommen.
for (x=3; x<6; x++)
{
if (ziehung[2]==ziehung[x])
return 1;
}
//Vergleich Ziehung 4 auf doppeltes vorkommen.
for (x=4; x<6; x++)
{
if (ziehung[3]==ziehung[x])
return 1;
}
//Vergleich Ziehung 5 auf doppeltes vorkommen.
for (x=5; x<6; x++)
{
if (ziehung[4]==ziehung[x])
return 1;
}
return 0;
}Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
