SHARE
TWEET

Untitled

a guest Dec 7th, 2019 85 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <math.h>
  5. #define DIMINIT 3
  6.  
  7. int **initializare_matrice(int nl)
  8. {
  9.     int i;
  10.     int **m = (int **) malloc (nl * sizeof(int *));
  11.     if(m != NULL)
  12.         for(i = 0; i < nl; i++)
  13.             m[i] = (int *) malloc (DIMINIT * sizeof(int));
  14.     return m;
  15. }
  16.  
  17. int **citire_matrice ( int **a, int nl)
  18. {
  19.     int i, j, capacitate;
  20.     capacitate = DIMINIT;
  21.     j = 0;
  22.     for(i = 0; i < nl; i++)
  23.     {
  24.         scanf("%d", &a[i][j]);
  25.         while (a[i][j] != 0 )
  26.         {
  27.             if (j == capacitate - 1)
  28.             {
  29.                 capacitate += DIMINIT;
  30.                 a[i] = (int *) realloc (a[i], capacitate * sizeof(int));
  31.             }
  32.             j++;
  33.             scanf("%d", &a[i][j]);
  34.         }
  35.         j = 0;
  36.     }
  37.     return a;
  38. }
  39.  
  40. float medie_linie(int *v)
  41. {
  42.     int i = 0, s = 0;
  43.     while(v[i] != 0)
  44.     {
  45.         s = s + v[i];
  46.         i++;
  47.     }
  48.     if(i == 0)
  49.         return 0;
  50.     return (float) s / i;
  51. }
  52.  
  53. void bubble_sort(float *v, int nl)
  54. {
  55.     int i, j;
  56.     float aux;
  57.     for(i = 0; i < nl - 1; i++)
  58.         for(j = i + 1; j < nl; j++)
  59.             if (v[i] < v[j])
  60.             {
  61.                 aux = v[i];
  62.                 v[i] = v[j];
  63.                 v[j] = aux;
  64.             }
  65. }
  66.  
  67. void bubble_sort_matrice(int **a, float *v, int nl)
  68. {
  69.     int i, j;
  70.     float aux;
  71.     int *aux2;
  72.     for(i = 0; i < nl - 1; i++)
  73.         for(j = i + 1; j < nl; j++)
  74.             if (v[i] < v[j])
  75.             {
  76.                 aux = v[i];
  77.                 aux2 = a[i];
  78.  
  79.                 v[i] = v[j];
  80.                 a[i] = a[j];
  81.  
  82.                 v[j] = aux;
  83.                 a[j] = aux2;
  84.             }
  85. }
  86.  
  87. float *vector_medii( int **a, int nl)
  88. {
  89.     int i;
  90.     float *v;
  91.     v = (float *) malloc(nl * sizeof(float));
  92.  
  93.     for(i = 0; i < nl; i++)
  94.         v[i] = medie_linie(a[i]);
  95.     // bubble_sort_matrice(a, v, nl);
  96.     return v;
  97. }
  98.  
  99. int determ_pozitie( int **a, int nl, float medie)
  100. {
  101.     int i;
  102.     for(i = 0; i < nl; i++)
  103.         if(medie == medie_linie(a[i]))
  104.         {
  105.             return i;
  106.         }
  107.     return 0;
  108. }
  109.  
  110. void afisare_linie( int **a, int i)
  111. {
  112.     int j = 0;
  113.     while (a[i][j] != 0)
  114.     {
  115.         printf("%d", a[i][j]);
  116.         j++;
  117.         if (a[i][j] != 0)
  118.         {
  119.             printf(" ");
  120.         }
  121.     }
  122.     printf("\n");
  123. }
  124.  
  125. float getMaxValueLessThan(float *v, int size, float upperBound)
  126. {
  127.     upperBound -= 0.000001;
  128.     float currentMax = 0.0;
  129.     for (int i = 0; i < size; i++)
  130.     {
  131.         if (v[i] > currentMax && v[i] < upperBound)
  132.         {
  133.             currentMax = v[i];
  134.         }
  135.     }
  136.     return currentMax;
  137. }
  138.  
  139. void printLinesWithAverage(int **a, int size, float *v, float avg)
  140. {
  141.     for (int i = 0; i < size; i++)
  142.     {
  143.         if (fabs(v[i] - avg) < 0.0001)
  144.         {
  145.             printf("%-10.3f", v[i]);
  146.             afisare_linie(a, i);
  147.         }
  148.     }
  149. }
  150.  
  151. int main ()
  152. {
  153.     int **a, nl, i, index;
  154.     float *v;
  155.  
  156.     scanf ("%d", &nl);
  157.     a = initializare_matrice(nl);
  158.     a = citire_matrice(a, nl);
  159.     v = vector_medii(a, nl);
  160.     // for (i=0;i<nl;i++) {
  161.     //  printf("%-10.3f",v[i]);
  162.     //  index=determ_pozitie(a,nl,v[i]);
  163.     //  afisare_linie(a,index);
  164.     // }
  165.     float crtMax = 11.0;
  166.     crtMax = getMaxValueLessThan(v, nl, crtMax);
  167.     while (crtMax > 0)
  168.     {
  169.         printLinesWithAverage(a, nl, v, crtMax);
  170.         crtMax = getMaxValueLessThan(v, nl, crtMax);
  171.     }
  172.     free(v);
  173.     for(i = 0; i < nl; i++)
  174.         free(a[i]);
  175.     free(a);
  176.     return 0;
  177. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top