// 7/V08I//953/5 // #include "stdafx.h" #include "memory.h" #include "stdio.h" #include "conio.h" void alfeladat_1(int *szamok) { int i; printf("Kerem adja be az 52. het lottoszamait!\n"); for(i = 0; i < 5; i++) { while(szamok[i] == 0) { printf("Kerem az %d. szamot: ", i + 1); if(1 != scanf("%d", &szamok[i])) { printf("Hiba! Egesz szamokat varok!\n"); szamok[i] = 0; flushall(); continue; } if(szamok[i] < 1 || szamok[i] > 90) { printf("Hiba! Az [1..90] intervallumban varok szamokat!\n"); szamok[i] = 0; continue; } for(int j = 0; j < i; j++) { if(szamok[j] == szamok[i]) { printf("Hiba! Ez a szam mar volt!\n"); szamok[i] = 0; continue; } } } } } // 2. alfeladat - rendezés és kiiratás void alfeladat_2(int *szamok) { int h, i, j; for(j = 0; j < 4; j++) { for(i = 4; i > j; i--) { if(szamok[i] < szamok[j]) { h = szamok[i]; szamok[i] = szamok[j]; szamok[j] = h; } } } printf("\nAz 52. heti szamok novekvo sorrendben: "); for(i = 0; i < 5; i++) { printf("%d%s", szamok[i], (i < 4)?(", "):("\n")); } } // 3. alfeladat - bekérni egy számot [1..51] intervallumban int alfeladat_3(void) { int h = 0; while(h == 0) { printf("Kerek egy egesz szamot az [1..51] intervallumban: "); if(1 != scanf("%d", &h)) { flushall(); continue; } if(h < 1 || h > 51) { h = 0; continue; } } return h; } int read_lotto_dat(int *buffer) { int i = 0; FILE *f = fopen("lottosz.dat", "r"); if(f) { while(!feof(f)) { fscanf(f, "%d %d %d %d %d\n" ,&buffer[i*5] ,&buffer[i*5+1] ,&buffer[i*5+2] ,&buffer[i*5+3] ,&buffer[i*5+4] ); i++; } fclose(f); } return i; } void alfeladat_4(int *buffer, int n) { int i = n - 1; printf("A(z) %d heti lotto nyeroszamok: %d, %d, %d, %d, %d\n", n ,buffer[i*5] ,buffer[i*5+1] ,buffer[i*5+2] ,buffer[i*5+3] ,buffer[i*5+4] ); } void alfeladat_5(int *buffer) { int i; int szamlalo[90]; memset(szamlalo, 0, sizeof(szamlalo)); for(i = 0; i < 51 * 5; i++) { szamlalo[buffer[i] - 1]++; } i = 0; while(i < 90 && szamlalo[i] != 0) { i++; } printf("Van olyan szam, amit egyszer sem huztak ki? "); if(i < 90) { printf("Van\n"); } else { printf("Nincs\n"); } } void alfeladat_6(int *buffer) { int h, i, j; h = 0; for(j = 0; j < 51; j++) { i = 0; while(i < 5 && !(buffer[(j * 5) + i] % 2)) { i++; } if(i < 5) { h++; } } printf("A paratlan szamok elofordulasanak szama: %d", h); } void alfeladat_7(int *buffer, int *szamok) { int i; FILE *f = fopen("lotto52.ki", "w+"); memcpy(&buffer[51*5], szamok, sizeof(szamok) * 5); printf("Mentes...\n"); if(f) { for(i = 0; i < 52; i++) { fprintf(f, "%d %d %d %d %d\n" ,buffer[i*5] ,buffer[i*5+1] ,buffer[i*5+2] ,buffer[i*5+3] ,buffer[i*5+4] ); } fclose(f); } else { printf("Hiba! Nem tudtam letrehozni a lotto52.ki allaomanyt.\n"); } } void alfeladat_8(int *buffer) { int i; int szamlalo[90]; memset(szamlalo, 0, sizeof(szamlalo)); printf("A 90 darab szam huzasainak szamai, az 52 het soran:\n"); for(i = 0; i < 52 * 5; i++) { szamlalo[buffer[i] - 1]++; } for(i = 0; i < 90; i++) { if(!(i % 15)) { printf("\n"); } printf("%2d ", szamlalo[i]); } printf("\n"); } void alfeladat_9(int *buffer, int* primek, int nprim) { int h, i, j; printf("A huzott szamok kozott elo nem fordulo primszamok listaja: "); h = 0; for(i = 0; i < nprim; i++) { j = 0; while(j < (52 * 5) && primek[i] != buffer[j]) { j++; } if(j >= (52 * 5)) { if(h) { printf(", "); } printf("%d", primek[i]); h++; } } printf("\n"); } int main(int argc, char* argv[]) { int h; int szamok[5] = {0,0,0,0,0}; // Az 52. het szamai int primek[] = {2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89}; int osszesszam[52][5]; memset(osszesszam, 0, sizeof(osszesszam)); alfeladat_1(szamok); printf("\n"); alfeladat_2(szamok); printf("\n"); h = alfeladat_3(); printf("\n"); if(51 != read_lotto_dat((int*)osszesszam)) { printf("Hiba! lottosz.dat nem talalhato, vagy serult."); } alfeladat_4((int*)osszesszam, h); printf("\n"); alfeladat_5((int*)osszesszam); printf("\n"); alfeladat_6((int*)osszesszam); printf("\n"); alfeladat_7((int*)osszesszam, szamok); printf("\n"); alfeladat_8((int*)osszesszam); printf("\n"); alfeladat_9((int*)osszesszam, primek, sizeof(primek)/sizeof(primek[0])); printf("\n"); printf("Nyomj egy billentyut a befejezeshez..."); getch(); return 0; }