Advertisement
Alweys

UPRO Vjezbe 7, zad. 7

Nov 6th, 2023 (edited)
495
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.19 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. /*
  4. Učitavati cijele brojeve iz zatvorenog intervala [1, 20000] dok god se ne upiše broj izvan tog
  5. intervala. Prebrojati koliko je upisano brojeva iz intervala [1, 100], koliko iz intervala [101, 200],
  6. koliko iz intervala [201, 300], ..., koliko iz intervala [19901, 20000]. Pronaći i ispisati interval u
  7. kojem ima najviše upisanih brojeva. Ako ima više intervala u kojima ima jednak broj (najveći)
  8. upisanih brojeva, ispisati sve takve intervale.
  9.  
  10. Upisite brojeve [1, 20000] > 1501 107 115 1521 55 11 19054 1545 199 0
  11. [101, 200]: 3
  12. [1501, 1600]: 3
  13. */
  14.  
  15. #define MIN_BROJ 1
  16. #define MAX_BROJ 20000
  17.  
  18. int main() {
  19.     int upis, najveci = 0, brojevi[MAX_BROJ] = { 0 }; // Deklaracija, svaki element v polju postavis na 0 z { 0 }
  20.  
  21.     printf("Upisite brojeve [%d, %d] > ", MIN_BROJ, MAX_BROJ); // Unos
  22.     do {
  23.         scanf("%d", &upis);
  24.         if(!(upis >= MIN_BROJ && upis <= MAX_BROJ)) // Ak nije v intervalu breakaj
  25.             break;
  26.  
  27.         brojevi[upis - (upis % 100)]++; /*  upis - (upis % 100) -> to da prvi element v zadanom intervalu,
  28.                                             npr. unos = 961, 961 % 100 = 96, 961 - 61 = 900
  29.                                             onda v polju na prvom elementu samo v intervalu povecavas brojac
  30.                                             znaci brojac se povecava na: brojevi[0], brojevi[100],
  31.                                             brojevi[200], brojevi[300] ... brojevi[19000]
  32.                                         */
  33.     } while (upis >= MIN_BROJ && upis <= MAX_BROJ);
  34.  
  35.     for(int i = 0; i < MAX_BROJ; i+=100) /* provjeravamo brojeve brojevi[0], brojevi[100],
  36.                                             brojevi[200], brojevi[300] ... brojevi[19000]
  37.                                             zato pocnemo z 0 i povecavamo i za 100    
  38.                                         */
  39.         if(brojevi[i] > najveci)    // ak je zbroj veci od najveceg, spremi ga kao najveci
  40.             najveci = brojevi[i];
  41.  
  42.     for(int i = 0; i < MAX_BROJ; i+=100)
  43.         if(brojevi[i] == najveci)   // ispisi samo one de je zbroj == najvecem
  44.             printf("[%d, %d]: %d\n", i+1, i+100, najveci);
  45.  
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement