Software > Coding

Übung: Lotto

(1/2) > >>

HamSTer:
Ich hab mich mal an Lotto versucht (nicht real, da gewinnen eh nur die anderen). Vielleicht mag es ja wer mal probieren?
Für jeden Millionengewinn spenden wir ne halbe Mille dem Forum hier, oder ??


--- Code: ---#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#define DEBUG 1

int main(void){
uint16_t maxzahlen=49, maxziehen=6, zusatzzahl=1;
uint16_t i, j, n, schondrin=0;
uint16_t *zahlen=NULL;
system("clear");
printf(" L O T T O Z I E H U N G \n");
printf("- H a m S T e r - a r t - \n\n");
do{
printf("Zahlenmenge? (49?): ");
scanf("%hu",&maxzahlen);
}while(maxzahlen < 1);
do{
printf("Anzahl Zahlen zu ziehen? (6?): ");
scanf("%hu",&maxziehen);
}while((maxziehen > maxzahlen));
zahlen=malloc((maxziehen+1)*(sizeof(uint16_t)));
printf("Zusatzzahl ziehen? (1|0): ");
scanf("%hu",&zusatzzahl);
srand(time(NULL));
for(i=0;i<maxziehen;i++){
do{
n=(rand() % maxzahlen)+1;
schondrin=0;
for(j=0;j!=i;j++){
if(zahlen[j]==n){
schondrin=1;
#if DEBUG
printf("schondrin..");
#endif
}
}
if(!schondrin) zahlen[i]=n;
}while(schondrin);
printf("%hu ",zahlen[i]);
}
if(zusatzzahl){
do{
n=(rand() % maxzahlen)+1;
schondrin=0;
for (j=0;j!=maxziehen;j++){
if(zahlen[j]==n){
schondrin=1;
#if DEBUG
printf("schondrin..");
#endif
}
}
if(!schondrin) zahlen[maxziehen+1]=n;
}while(schondrin);
printf("Zusatzzahl: %hu",zahlen[maxziehen+1]);
}
printf("\n\n");
free(zahlen);
return EXIT_SUCCESS;
}


--- Ende Code ---

edit: quelltext korrektur. compilat erneut angehängt.

HamSTer:
Anbei noch eine Frage: Wo kann ich nachlesen, welches Format ich benutzen muss bei scanf oder printf für diese uint16_t usw ? Also als Platzhalter.

Arthur:
Hallo HamSTer,

eine gute Idee von Dir... und so nach und nach ein richtiges kleines GEM-Programm daraus entwickeln... und zum Ende hin ein Vergleich wie man sich Arbeit sparen kann bei Verwendung einer GEM-Bibliothek...  träum.


--- Zitat von: HamSTer am Di 21.05.2013, 19:37:36 ---Anbei noch eine Frage: Wo kann ich nachlesen, welches Format ich benutzen muss bei scanf oder printf für diese uint16_t usw ? Also als Platzhalter.

--- Ende Zitat ---

Ich bin kein Programmierer...  aber vielleicht in den Header-Dateien? Ist das eigentlich egal welchen Atari C-Compiler man dafür nimmt?

simonsunnyboy:
Nimm ganz normal %d für Dezimalzahlen und %x für Hexzahlen, da gibt es soweit ich weiss, keine speziellen Platzhalter. Ansonsten lies in einne int ein ein caste auf den nötigen (u)intX_t

HamSTer:
Also für %d bekomme ich unter gcc (linux) Warnungen. Nehm ich hingegen m68k-mint-gcc dann wird nicht gemeckert.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln