Guest User

Untitled

a guest
May 20th, 2018
131
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. #define OKVIRI 10
  4. #define ZAHTJEVI 100
  5.  
  6. struct _o {
  7.     int zastavica, okvir;
  8. };
  9.  
  10. enum _t {
  11.     UMETNUT, POGODAK
  12. };
  13.  
  14. typedef struct _o Stranica;
  15. typedef enum _t Tip;
  16.  
  17. Stranica sveStranice[OKVIRI];
  18. int trenutniIndeks = 0, pokazivac = 0;
  19.  
  20. int charUBroj(char *niz) {
  21.     int i = strlen(niz) - 1;
  22.     int baza = 1;
  23.     int r = 0;
  24.     for (; i >= 0; i--, baza *= 10) {
  25.         r += baza * (niz[i] - '0');
  26.     }
  27.     return r;
  28. }
  29.  
  30. int zaglavlje(int brOkvira) {
  31.     int i, kraj;
  32.    
  33.     printf("#N");
  34.    
  35.     for (i = 0; i < brOkvira; i++) {
  36.         printf("%3d", i + 1);
  37.     }
  38.     printf("\n");
  39.     for (i = 0, kraj = brOkvira * 3 + 2; i < kraj; i++) {
  40.         printf("-");
  41.     }
  42.     printf("\n");
  43. }
  44.  
  45. int vratiIndeks(int zahtjev) {
  46.     int i;
  47.     for (i = 0; i < trenutniIndeks; i++) {
  48.         if (sveStranice[i].okvir == zahtjev) { return i; }
  49.     }
  50.     return -1;
  51. }
  52.  
  53. int umetni(int zahtjev, int brOkvira) {
  54.     if (trenutniIndeks < brOkvira) {
  55.         sveStranice[trenutniIndeks].okvir = zahtjev;
  56.         sveStranice[trenutniIndeks].zastavica = 1;
  57.         return trenutniIndeks++;
  58.     }
  59.     for (; sveStranice[pokazivac].zastavica != 0; pokazivac = (pokazivac + 1) % brOkvira) {
  60.         sveStranice[pokazivac].zastavica = 0;
  61.     }
  62.     sveStranice[pokazivac].okvir = zahtjev;
  63.     sveStranice[pokazivac].zastavica = 1;
  64.    
  65.     return pokazivac;
  66. }
  67.  
  68. int pisiStatus(int zahtjev, int indeks, Tip tip, int brOkvira) {
  69.     int i;
  70.     printf("%d ", zahtjev);
  71.     for (i = 0; i < brOkvira; i++) {
  72.         if (indeks == i) {
  73.             if (tip == UMETNUT) { printf(" [%d]", sveStranice[i].okvir); }
  74.             else  { printf(" (%d)", sveStranice[i].okvir); }
  75.         } else { printf("%3d", sveStranice[i].okvir); }
  76.     }
  77.     printf("\n");
  78. }
  79.  
  80. int main(int argc, char *argv[]) {
  81.     int brOkvira = charUBroj(argv[1]);
  82.     int brZahtjeva = charUBroj(argv[2]);
  83.     int i, zahtjevi[ZAHTJEVI];
  84.     int indeks;
  85.     Tip tip;
  86.    
  87.     printf("Zahtjevi: ");
  88.     for (i = 0; i < brZahtjeva; i++) {
  89.         zahtjevi[i] = rand() % 8 + 1;
  90.         printf("%3d", zahtjevi[i]);
  91.         if (i + 1 < brZahtjeva) { printf(","); }
  92.     }
  93.     printf("\n");
  94.    
  95.     zaglavlje(brOkvira);
  96.    
  97.     for (i = 0; i < brZahtjeva; i++) {
  98.         tip = (vratiIndeks(zahtjevi[i]) == -1) ? UMETNUT : POGODAK;
  99.         indeks = umetni(zahtjevi[i], brOkvira);
  100.         pisiStatus(zahtjevi[i], indeks, tip, brOkvira);
  101.     }
  102.     return 0;
  103. }
Add Comment
Please, Sign In to add comment