Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.08 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. struct clasament {
  6.     int p;
  7.     char nume[16];
  8. };
  9.  
  10. struct tara {
  11.     char nume[16];
  12. };
  13.  
  14. int search(struct tara **a, char c[16], int ln) {
  15.     int i;
  16.     for (i = 1; i < 13; i++){
  17.         if(strcmp(a[ln][i].nume,c) == 0)
  18.             return 0;
  19.     }
  20.     return 1;
  21. }
  22.  
  23. int poz(char c[16], struct clasament *v,int nr) {
  24.     int i;
  25.     for(i = 0; i < nr; i++) {
  26.         if(strcmp(c, v[i].nume) == 0) {
  27.             return i;
  28.         }
  29.     }
  30.     return -1;
  31. }
  32.  
  33. void swapc(char *str1, char *str2) {
  34.     char tmp[16];
  35.     strcpy(tmp, str1);
  36.     strcpy(str1, str2);
  37.     strcpy(str2, tmp);
  38. }
  39.  
  40. void swapi(int *nr1, int *nr2) {
  41.     int tmp = *nr1;
  42.     *nr1 = *nr2;
  43.     *nr2 = tmp;
  44. }
  45.  
  46. void sort(struct clasament *v, int nr, int p) {
  47.     int i, j;
  48.      for (i = 0; i < nr - 1; i++) {
  49.         for (j = i + 1; j < nr; j++) {
  50.             if(v[i].p < v[j].p){
  51.                 swapi(&v[i].p,&v[j].p);
  52.                 swapc(v[i].nume,v[j].nume);
  53.             }
  54.         }
  55.     }
  56.     for(i = 0; i < p; i++){
  57.         printf("%s\n",v[i].nume);
  58.     }
  59. }
  60.  
  61. int main(){
  62.     int n, i, j, g = 0, id, nr = 0;
  63.     char fisier[20];
  64.     struct tara **a;
  65.     struct clasament *v;
  66.     scanf("%d%s",&n,fisier);
  67.     FILE *f1 = fopen (fisier, "r");
  68.     v = malloc(n * sizeof(struct clasament));
  69.     a = malloc(n * sizeof(struct tara*));
  70.     for (i = 0; i < n; i++) {
  71.         a[i] = malloc(13 * sizeof(struct tara));
  72.     }
  73.     for (i = 0; i < n; i++){
  74.         for (j = 0; j < 13 ; j++) {
  75.             fscanf(f1, "%s", a[i][j].nume);
  76.         }
  77.     }
  78.     for (i = 0; i < n; i++){
  79.         if (search(a, a[i][0].nume, i)) {
  80.             for(j = 0; j < 13; j++) {
  81.                 id = poz(a[i][j].nume, v, nr);
  82.                 if (id >= 0) {
  83.                     strcpy(v[id].nume, a[i][j].nume);
  84.                     if (j > 0) {
  85.                         v[id].p += 12 - j + 1;
  86.                     }
  87.                 } else {
  88.                     strcpy(v[nr].nume, a[i][j].nume);
  89.                     if (j > 0) {
  90.                         v[nr].p += 12 - j + 1;
  91.                     } else {
  92.                         v[nr].p = 0;
  93.                     }
  94.                     nr++;
  95.                 }
  96.             }
  97.         } else {
  98.             printf("Juriu descalificat: %s\n",a[i][0].nume);
  99.         }
  100.     }
  101.     sort(v, nr, 10);
  102.     printf("0 PUNCTE:\n");
  103.     while(v[nr - 1].p == 0 && nr - 1 >= 0) {
  104.         printf("%s\n", v[nr].nume);
  105.         nr--;
  106.     }
  107.     fclose(f1);
  108.     free(v);
  109.     for (i = 0; i < n; i++) {
  110.         free(a[i]);
  111.     }
  112.     free(a);
  113.     return 0;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement