Advertisement
attilan

Mate2

Apr 27th, 2018
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.50 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include<stdio.h>
  4. #include<stdlib.h>
  5. #include<time.h>
  6. #include<string.h>
  7.  
  8. typedef struct Lista {
  9.     int elso;
  10.     int masodik;
  11.     int harmadik;
  12.     int negyedik;
  13.     int otodik;
  14.     struct Lista* KOV;
  15. } Listaelem;
  16.  
  17. void beolvas(char f[], Listaelem* ELSO, int* sorsz);
  18. void elsoelem(Listaelem* ELSO, char buf[]);
  19. void vegere(Listaelem* ELSO, char buf[]);
  20. void egeszlistatorlese(Listaelem* ELSO);
  21. int* lottohuzas();
  22. void talalatok(Listaelem* ELSO, int szamok[]);
  23.  
  24. int main(int argc, char* argv[]) {
  25.     Listaelem* ELSO = (Listaelem *)malloc(sizeof(Listaelem));
  26.     int i = 0;
  27.     int elemszam = 5;
  28.     int* szamok = (int *)malloc(sizeof(int) * elemszam);
  29.     int sorsz = 0;
  30.  
  31.     if (argc >= 2) {
  32.         FILE* file = fopen(argv[1], "r");
  33.         if (!file) {
  34.             printf("A megadott fajl (%s) nem letezik!\n", argv[1]);
  35.             getchar();
  36.             return EXIT_FAILURE;
  37.         }
  38.         else {
  39.             beolvas(argv[1], ELSO, &sorsz);
  40.             printf("A fogadasok szama: %d db.\n\n", sorsz);
  41.             szamok = lottohuzas();
  42.             talalatok(ELSO, szamok);
  43.             free(szamok);
  44.             egeszlistatorlese(ELSO);
  45.             getchar();
  46.         }
  47.         return EXIT_SUCCESS;
  48.     }
  49.     else {
  50.         printf("Keves parameter!\n");
  51.         printf("Adja meg a fajl neve utan parameterkent a ""lotto.txt"" szovegfajlt!\n");
  52.         printf("Pelda: ConsoleApplication4.exe lotto.txt\n");
  53.         getchar();
  54.         return EXIT_FAILURE;
  55.     }
  56. }
  57.  
  58. void beolvas(char f[], Listaelem* ELSO, int* sorsz) {
  59.     FILE* fp = fopen(f, "r");
  60.     char buffer[20] = "\0";
  61.     int hossz;
  62.     int futas = 0;
  63.     int db = 0;
  64.  
  65.     while (fgets(buffer, sizeof(buffer), fp) != NULL) {
  66.         hossz = strlen(buffer) - 1;
  67.         if (buffer[hossz] == '\n')
  68.             buffer[hossz] = '\0';
  69.         if (futas == 0) {
  70.             elsoelem(ELSO, buffer);
  71.             futas++;
  72.         }
  73.         else {
  74.             vegere(ELSO, buffer);
  75.         }
  76.         db++;
  77.     }
  78.     fclose(fp);
  79.     *sorsz = db;
  80. }
  81.  
  82. void elsoelem(Listaelem* ELSO, char buf[]) {
  83.     Listaelem* AKT = ELSO;
  84.     char* token;
  85.     int futas = 0;
  86.  
  87.     token = strtok(buf, "\t");
  88.  
  89.     while (token != NULL) {
  90.         if (futas == 0) {
  91.             AKT->elso = atoi(token);
  92.             futas++;
  93.         }
  94.         else if (futas == 1) {
  95.             AKT->masodik = atoi(token);
  96.             futas++;
  97.         }
  98.         else if (futas == 2) {
  99.             AKT->harmadik = atoi(token);
  100.             futas++;
  101.         }
  102.         else if (futas == 3) {
  103.             AKT->negyedik = atoi(token);
  104.             futas++;
  105.         }
  106.         else {
  107.             AKT->otodik = atoi(token);
  108.             AKT->KOV = NULL;
  109.         }
  110.         token = strtok(NULL, "\t");
  111.     }
  112. }
  113.  
  114. void vegere(Listaelem* ELSO, char buf[]) {
  115.     Listaelem* AKT = ELSO;
  116.     Listaelem* ELOZO = NULL;
  117.     char* token;
  118.     int futas = 0;
  119.  
  120.     while (AKT != NULL) {
  121.         ELOZO = AKT;
  122.         AKT = AKT->KOV;
  123.     }
  124.     ELOZO->KOV = (Listaelem *)malloc(sizeof(Listaelem));
  125.     AKT = ELOZO->KOV;
  126.  
  127.     token = strtok(buf, "\t");
  128.     while (token != NULL) {
  129.         if (futas == 0) {
  130.             AKT->elso = atoi(token);
  131.             futas++;
  132.         }
  133.         else if (futas == 1) {
  134.             AKT->masodik = atoi(token);
  135.             futas++;
  136.         }
  137.         else if (futas == 2) {
  138.             AKT->harmadik = atoi(token);
  139.             futas++;
  140.         }
  141.         else if (futas == 3) {
  142.             AKT->negyedik = atoi(token);
  143.             futas++;
  144.         }
  145.         else {
  146.             AKT->otodik = atoi(token);
  147.             AKT->KOV = NULL;
  148.         }
  149.         token = strtok(NULL, "\t");
  150.     }
  151. }
  152.  
  153. void talalatok(Listaelem* ELSO, int* szamok) {
  154.     Listaelem* AKT = ELSO;
  155.     int* talalattomb = (int *)calloc(5, sizeof(int));
  156.     int talalat = 0;
  157.     int i;
  158.     int j = 0;
  159.  
  160.     while (AKT != NULL) {
  161.         for (i = 0; i < 5; i++) {
  162.             if (AKT->elso == szamok[i])
  163.                 talalat++;
  164.             if (AKT->masodik == szamok[i])
  165.                 talalat++;
  166.             if (AKT->harmadik == szamok[i])
  167.                 talalat++;
  168.             if (AKT->negyedik == szamok[i])
  169.                 talalat++;
  170.             if (AKT->otodik == szamok[i])
  171.                 talalat++;
  172.         }
  173.         talalattomb[j] = talalat;
  174.         talalat = 0;
  175.         j++;
  176.         AKT = AKT->KOV;
  177.     }
  178.     i = 0;
  179.     for (i; i < 5; i++)
  180.         printf("A %d talalatos szelvenyek szama: [%d]\n", i + 1, talalattomb[i]);
  181. }
  182.  
  183. void egeszlistatorlese(Listaelem* ELSO) {
  184.     Listaelem* tmp;
  185.     Listaelem* AKT = ELSO;
  186.  
  187.     while (AKT) {
  188.         tmp = AKT;
  189.         AKT = AKT->KOV;
  190.         free(tmp);
  191.     }
  192. }
  193.  
  194. int* lottohuzas() {
  195.     int elemszam = 5;
  196.     int* szamok = (int *)malloc(sizeof(int) * elemszam);
  197.     int i = 0;
  198.     int j = 0;
  199.     int vege = 0;
  200.     int kulonindex = 1;
  201.     int ok = 1;
  202.     int r;
  203.  
  204.     srand(time(NULL));
  205.  
  206.     for (i = 0; i < elemszam; i++)
  207.         szamok[i] = -1;
  208.  
  209.     r = ((rand() % 90) + 1);
  210.     do {
  211.         r = ((rand() % 90) + 1);
  212.         if (!j)
  213.             szamok[0] = r;
  214.         else {
  215.             for (i = 0; i < elemszam && ok; i++)
  216.                 if (szamok[i] == r)
  217.                     ok = 0;
  218.             if (ok)
  219.                 szamok[kulonindex++] = r;
  220.             if (kulonindex == elemszam)
  221.                 vege = 1;
  222.         }
  223.         j++;
  224.         ok = 1;
  225.     } while (!vege);
  226.     i = 0;
  227.     for (i; i < 5; i++)
  228.         printf("A %d. szam: %d\n", i + 1, szamok[i]);
  229.     return szamok;
  230. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement