Advertisement
icatalin

piramida cuburi colorate greedy

Apr 26th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct cub
  5. {
  6.     int latura, culoare;
  7. };
  8.  
  9. void citire(FILE *fin, int *n, int *p, struct cub *ptr)
  10. {
  11.     fscanf(fin,"%d",&(*n));
  12.     fscanf(fin,"%d",&(*p));
  13.     int i;
  14.  
  15.     for (i=0; i<*n; i++)
  16.     {
  17.         fscanf(fin,"%d %d",&ptr->latura,&ptr->culoare);
  18.         ptr++;
  19.     }
  20.  
  21. }
  22.  
  23. void afisare(FILE *fout, int n, struct cub *ptr)
  24. {
  25.     fprintf(fout,"Vector sortat descrescator dupa latura:\n");
  26.  
  27.     int i;
  28.  
  29.     fprintf(fout,"%d\n",n);
  30.  
  31.     for (i=0; i<n; i++)
  32.     {
  33.         fprintf(fout,"%d %d \n", ptr->latura, ptr->culoare);
  34.         ptr++;
  35.     }
  36.  
  37. }
  38.  
  39. int comparator(const void *s1, const void *s2) //asta e pentru quicksort
  40. {
  41.     struct cub *e1 = (struct cub *) s1;
  42.     struct cub *e2 = (struct cub *) s2;
  43.  
  44.     return e2->latura - e1->latura;
  45. /*
  46.     if (e1->latura > e2->latura)
  47.         return -1;
  48.     else if (e1->culoare < e2->culoare)
  49.         return 1;
  50.  
  51.     return 0;*/
  52. }
  53.  
  54. void greedy(FILE *fout, int n, struct cub *v)
  55. {
  56.     fprintf(fout,"\n********************************************************\nRezolvare:\n");
  57.  
  58.     int i = 1, cul;
  59.  
  60.     fprintf(fout,"%d %d \n", v[0].latura, v[0].culoare);
  61.  
  62.     cul = v[0].culoare;
  63.  
  64.     while (i < n)
  65.     {
  66.         if (v[i].culoare != cul)
  67.             {
  68.                 fprintf(fout,"%d %d \n", v[i].latura, v[i].culoare);
  69.                 cul = v[i].culoare;
  70.             }
  71.  
  72.         i++;
  73.     }
  74.  
  75. }
  76.  
  77. int main()
  78. {
  79.     FILE *fin, *fout;
  80.  
  81.     fin = fopen("date.in","r");
  82.     fout = fopen("date.out","w");
  83.  
  84.     struct cub vec[100];
  85.     int n,p;
  86.  
  87.     citire(fin,&n,&p,vec);
  88.     qsort(vec,n,sizeof(struct cub),comparator);
  89.     afisare(fout,n,vec);
  90.     greedy(fout,n,vec);
  91.  
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement