Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.74 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int main(void) {
  4.     int n = 0; // numarul de elemente in tablou
  5.    
  6.     printf("Introduceti numărul de elemente al tabloului: ");
  7.     scanf("%i", &n);
  8.    
  9.     int t[n]; // tablou de nume intregi cu marimea `n`
  10.    
  11.     int pos_min = 0; // pozitia elementului minim
  12.     int pos_max = 0; // pozitia elementului minim
  13.    
  14.     printf("Introduceti valorile in tablou:\n");
  15.     for(int i = 0; i < n; i++) {
  16.         /* Citeste cate un element in tablou */
  17.         printf("t[%i]=", i);
  18.         scanf("%i", &t[i]);
  19.        
  20.         // daca valoarea din pozitia initiala `i` este mai mica decat
  21.         // valoarea elementului din pozitia `pos_min`,
  22.         // atunci atribuim in `pos_min` indicele `i` al tabloului
  23.         if (t[i] < t[pos_min]) {
  24.             pos_min = i;
  25.         }
  26.         // salvam pozitia elementului maxim in `pos_max`
  27.         if (t[i] > t[pos_max]) {
  28.             pos_max = i;
  29.         }
  30.     }
  31.    
  32.      /* Salvăm media numerelor minim și maxim în variabila `m` */
  33.     int m = (t[pos_max] + t[pos_min]) / 2;
  34.    
  35.     // salvam in `start` pozitia minima a tabloului,
  36.     // de la care va incepe parcurgerea ciclului
  37.     int start;
  38.     if (pos_max > pos_min) {
  39.         start = pos_min;
  40.     } else {
  41.         start = pos_max;
  42.     }
  43.     // facem la fel pentru `end`,
  44.     // ca sa stim pana unde vom citi
  45.     int end = pos_max > pos_min ? pos_max : pos_min;
  46.    
  47.     // Verificăm dacă există elemente între valoarea minimă și maximă.
  48.     if (start == end || start + 1 == end) {
  49.         printf("Nu sunt valori pentru a fi calculate.\n");
  50.         return 0;
  51.     }
  52.    
  53.     int s = 0; // suma valorilor inital este 0
  54.    
  55.     for (int i = start; i < end; i++) {
  56.         /* Verificam daca elementul `t[i]` este mai mic decat media */
  57.         if (t[i] < m) {
  58.             // adaugam valoarea la suma totala suma
  59.             s += t[i]; // sau `s = s + t[i];`
  60.         }
  61.     }
  62.    
  63.     printf("\nSuma valorilor este %i.\n", s);
  64.    
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement