Advertisement
anotender

kolejka_zlecen

Jan 8th, 2015
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.63 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define ILE_ZLECEN 10
  5.  
  6. struct zlecenie
  7. {
  8.     int numer;
  9.     struct zlecenie *wsk;
  10. };
  11.  
  12. int czy_pusta(const struct zlecenie *poczatek)
  13. {
  14.     if (poczatek==NULL) return 1;
  15.     else return 0;
  16. }
  17.  
  18. int czy_pelna(const struct zlecenie *poczatek)
  19. {
  20.     if (czy_pusta(poczatek)) return 0;
  21.     else
  22.     {
  23.         struct zlecenie *iterator=poczatek;
  24.         int numer;
  25.         while (iterator!=NULL)
  26.         {
  27.             numer=iterator->numer;
  28.             iterator=iterator->wsk;
  29.         }
  30.         if (numer<ILE_ZLECEN) return 0;
  31.         else return 1;
  32.     }
  33. }
  34.  
  35. struct zlecenie *dodaj(struct zlecenie *poczatek)
  36. {
  37.     if (czy_pusta(poczatek))
  38.     {
  39.         struct zlecenie *nowy=(struct zlecenie*)malloc(sizeof(struct zlecenie));
  40.         nowy->numer=1;
  41.         nowy->wsk=poczatek;
  42.         poczatek=nowy;
  43.     }
  44.     else
  45.     {
  46.         if (czy_pelna(poczatek))
  47.         {
  48.             system("clear");
  49.             printf("Nie mozesz przyjac nowego zlecenia.");
  50.             getchar();
  51.             return poczatek;
  52.         }
  53.         else
  54.         {
  55.             struct zlecenie *iterator=poczatek;
  56.             struct zlecenie *nowy=(struct zlecenie*)malloc(sizeof(struct zlecenie));
  57.             while(iterator->wsk!=NULL)
  58.             {
  59.                 iterator=iterator->wsk;
  60.             }
  61.             nowy->wsk=iterator->wsk;
  62.             nowy->numer=iterator->numer+1;
  63.             iterator->wsk=nowy;
  64.         }
  65.     }
  66.     return poczatek;
  67. }
  68.  
  69. struct zlecenie *usun(struct zlecenie *poczatek)
  70. {
  71.     if (czy_pusta(poczatek))
  72.     {
  73.         system("clear");
  74.         printf("Kolejka jest pusta.");
  75.         getchar();
  76.         return poczatek;
  77.     }
  78.     else return poczatek->wsk;
  79. }
  80.  
  81. void wypisz(const struct zlecenie *poczatek)
  82. {
  83.     if (czy_pusta(poczatek))
  84.     {
  85.         int i;
  86.         for(i=0;i<ILE_ZLECEN;i++)
  87.         {
  88.             printf("_ ");
  89.         }
  90.     }
  91.     else
  92.     {
  93.         int i,numer;
  94.         struct zlecenie *iterator=poczatek;
  95.         for(i=0;i<poczatek->numer-1;i++)
  96.         {
  97.             printf("_ ");
  98.         }
  99.         while(iterator!=NULL)
  100.         {
  101.             printf("%d ",iterator->numer);
  102.             numer=iterator->numer;
  103.             iterator=iterator->wsk;
  104.         }
  105.         for(i=numer;i<ILE_ZLECEN;i++)
  106.         {
  107.             printf("_ ");
  108.         }
  109.     }
  110.     printf("\n");
  111. }
  112.  
  113. int main()
  114. {
  115.     struct zlecenie *poczatek=NULL;
  116.     while(1)
  117.     {
  118.         char klawisz;
  119.         wypisz(poczatek);
  120.         printf("I - przyjecie zlecenia\n");
  121.         printf("O - obsluga zlecenia\n");
  122.         printf("X - wyjscie\n");
  123.         printf("Wybor: ");
  124.         scanf("%c",&klawisz);
  125.         getchar();
  126.         switch (klawisz)
  127.         {
  128.             case 'i':
  129.             {
  130.                 poczatek=dodaj(poczatek);
  131.                 break;
  132.             }
  133.             case 'o':
  134.             {
  135.                 poczatek=usun(poczatek);
  136.  
  137.                 break;
  138.             }
  139.             case 'f':
  140.             {
  141.                 system("clear");
  142.                 if (czy_pelna(poczatek)) printf("Kolejka jest pelna.");
  143.                 else printf("Kolejka nie jest pelna.");
  144.                 getchar();
  145.                 break;
  146.             }
  147.             case 'e':
  148.             {
  149.                 system("clear");
  150.                 if (czy_pusta(poczatek)) printf("Kolejka jest pusta.");
  151.                 else printf("Kolejka nie jest pusta.");
  152.                 getchar();
  153.                 break;
  154.             }
  155.             case 'x':
  156.             {
  157.                 exit(0);
  158.             }
  159.         }
  160.         system("clear");
  161.     }
  162.     return 0;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement