Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <string.h>
- typedef struct
- {
- char* meno;
- }priatel;
- typedef struct
- {
- char* menoUzivatela;
- int pocetPriatelov;
- priatel* menoPriatela;
- }ucet;
- int compareNames(ucet* zoznam,int count)
- {
- for (int i = 0;i<count;i++)
- {
- if (!strcmp(zoznam[count].menoUzivatela,zoznam[i].menoUzivatela))
- {
- return i;
- }
- else
- {
- }
- }
- return -1;
- }
- ucet parsee(char* riadok)
- {
- char *name;
- ucet newParse;
- newParse.menoUzivatela = malloc(strlen(riadok));
- newParse.menoUzivatela = strtok(riadok,":");
- name = strtok(NULL,"\n");
- newParse.pocetPriatelov = 1;
- newParse.menoPriatela = malloc(sizeof(priatel)*newParse.pocetPriatelov);
- newParse.menoPriatela[newParse.pocetPriatelov-1].meno = malloc(strlen(name)*sizeof(char)+1);
- strcpy(newParse.menoPriatela[newParse.pocetPriatelov-1].meno,name);
- return newParse;
- }
- ucet* load(char* cesta)
- {
- FILE* file;
- if (!(file = fopen(cesta,"r")))
- {
- fprintf(stderr,"Subor sa nepodarilo otvorit!");
- exit(EXIT_FAILURE);
- }
- char* riadok;
- ucet* zoznam = NULL;
- int count = 0;
- int repeat;
- while (!(feof(file)))
- {
- riadok = calloc(220,sizeof(char));
- if (!(feof(file)))
- {
- fgets(riadok,200,file);
- zoznam = realloc(zoznam,(count+1)*sizeof(ucet));
- zoznam[count].menoPriatela = malloc(sizeof(priatel));
- zoznam[count] = parsee(riadok);
- repeat = compareNames(zoznam,count);
- if (repeat == -1)
- {
- count++;
- }
- else
- {
- zoznam[repeat].pocetPriatelov++;
- zoznam[repeat].menoPriatela = realloc(zoznam[repeat].menoPriatela,sizeof(priatel)*zoznam[repeat].pocetPriatelov);
- zoznam[repeat].menoPriatela[zoznam[repeat].pocetPriatelov-1].meno = calloc(strlen(zoznam[count].menoPriatela[0].meno)+1,sizeof(char));
- strcpy(zoznam[repeat].menoPriatela[zoznam[repeat].pocetPriatelov-1].meno,zoznam[count].menoPriatela[0].meno);
- zoznam = realloc(zoznam, (count)*sizeof(ucet));
- }
- }
- }
- count--;
- int maximumPriatelov = zoznam[0].pocetPriatelov;
- int poradie = 0;
- for (int i = 0; i<=count;i++)
- {
- for (int j = 0; j<=count;j++)
- {
- if (zoznam[i].pocetPriatelov<zoznam[j].pocetPriatelov)
- {
- maximumPriatelov = zoznam[j].pocetPriatelov;
- poradie = j;
- }
- }
- }
- printf("%s = %d (",zoznam[poradie].menoUzivatela,zoznam[poradie].pocetPriatelov);
- for (int i = 0; i < maximumPriatelov;i++)
- {
- if (i == (maximumPriatelov - 1))
- printf("%s)\n",zoznam[poradie].menoPriatela[i].meno);
- else
- printf("%s, ",zoznam[poradie].menoPriatela[i].meno);
- }
- fclose(file);
- free(riadok);
- for (int i = 0; i <= count; i++)
- {
- for (int j = 0; j<=count; j++)
- {
- free(zoznam[i].menoPriatela[j].meno);
- }
- free(zoznam[i].menoUzivatela);
- free(zoznam[i].menoPriatela);
- }
- free(zoznam);
- return zoznam;
- }
- int main(int argc, char** argv)
- {
- if (argc < 3)
- {
- fprintf(stderr,"Nedostatok argumentov!");
- return -1;
- }
- load(argv[1]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement