Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
2,769
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define MAX 20
  5. void dodaj (char tab[MAX], int i);
  6. void ruch_dostawcy();
  7. struct tacka* porownaj(char tab[MAX], int i);
  8. void przekrec_tacke_w_lewo();
  9. void przekrec_tacke_w_prawo();
  10.  
  11.  
  12. typedef struct tacka
  13. {
  14.     char *nazwa[MAX];
  15.     struct tacka *next;
  16.     struct tacka *prev;
  17.     struct ciastko *ciastko;
  18. }Tacka;
  19.  
  20. struct ciastko
  21. {
  22.     int liczba;
  23.     struct ciastko *nast;
  24. };
  25.  
  26.  typedef struct ciastko elListy;
  27.  typedef elListy *lista;
  28.  
  29.  struct tacka *obecny = NULL;
  30.  struct tacka *glowny = NULL;
  31.  
  32.  
  33. int main()
  34. {
  35.     char ch;
  36.     printf("Tura zjadacza ciasteczek wybierz:\n");
  37.     printf("1.Zjedz ciasteczko lezace przed Toba\n");
  38.     printf("2.Przekrec tacke w prawo\n");
  39.     printf("3.przekrec tacke w lewo\n");
  40.     printf("4.Oddaj ruch dostawcy ciasteczek\n");
  41.     printf("5.Zakoncz program\n");
  42.     while ((ch = getchar())!= '5')
  43.     {
  44.  
  45.         switch(ch)
  46.     {
  47.         case 1 :;// zjedz_ciastko();
  48.                break;
  49.         case 2 : przekrec_tacke_w_prawo();
  50.                break;
  51.         case 3 : przekrec_tacke_w_lewo();
  52.                break;
  53.         case 4 : ruch_dostawcy();
  54.                break;
  55.         default : break;
  56.     };
  57.     printf("Tura zjadacza ciasteczek wybierz:\n");
  58.     printf("1.Zjedz ciasteczko lezace przed Toba\n");
  59.     printf("2.Przekrec tacke w prawo\n");
  60.     printf("3.przekrec tacke w lewo\n");
  61.     printf("4.Oddaj ruch dostawcy ciasteczek\n");
  62.     printf("5.Zakoncz program\n");
  63.     if (!obecny)
  64.         printf("Brak ciasteczek\n");
  65.     else if(obecny)
  66.     {
  67.         printf("%8d\n", obecny ->ciastko->liczba);
  68.         printf("%s",obecny->nazwa);
  69.     };
  70.     };
  71.     return 0;
  72. }
  73.  
  74.  
  75.  
  76. void przekrec_tacke_w_prawo()
  77. {
  78.    obecny = obecny -> next;
  79.     if (obecny)
  80.     {
  81.         return;
  82.     }
  83.     else
  84.         {
  85.             printf("Brak nastepnego elementu \n");
  86.             obecny = obecny ->prev;
  87.             return;
  88.         };
  89.  
  90. };
  91.  
  92. void przekrec_tacke_w_lewo()
  93. {
  94.     obecny = obecny -> prev;
  95.     if (obecny)
  96.         return;
  97.     else
  98.         {
  99.             printf("Brak poprzedniego elementu \n");
  100.             obecny = obecny ->next;
  101.             return;
  102.         };
  103.  
  104. };
  105.  
  106.  void ruch_dostawcy()
  107.  {
  108.   char *tab[MAX];
  109.   printf("Podaj nazwe ciastka: (pusty wiersz konczy dodawanie):\n");
  110.   scanf("%s",tab[MAX]);
  111.  
  112.   while (tab[0] != '\0')
  113.   {
  114.       struct tacka *aktualny;
  115.   if (!glowny)
  116.   {
  117.       aktualny = (Tacka*)malloc(sizeof(struct tacka));
  118.       strcpy(aktualny->nazwa, tab[MAX]);
  119.       aktualny->ciastko->liczba=1;
  120.       glowny = aktualny;
  121.       obecny = aktualny;
  122.   }
  123.  else
  124.   {
  125.       aktualny = glowny;
  126.       while (aktualny)
  127.       {
  128.            if(aktualny->nazwa==tab[MAX])
  129.            {
  130.                struct ciastko *akt;
  131.                push(akt);
  132.            };
  133.            aktualny = aktualny ->next;
  134.       }//konczy while
  135.  
  136.   }//konczy else
  137.   int n = 0;
  138.   dodaj(tab[MAX], n);
  139.   printf("Podaj nazwe ciastka: (pusty wiersz konczy dodawanie):\n");
  140.   scanf("%s",tab[MAX]);
  141.   }
  142.   return 0;
  143.  }
  144.  
  145. void dodaj (char tab[MAX], int i)
  146. {
  147.     struct tacka *a;
  148.     struct tacka *aktualny;
  149.     aktualny = glowny;
  150.     if (aktualny->nazwa[i]<tab[i])
  151.     {
  152.         a = (Tacka*)malloc(sizeof(struct tacka));
  153.         a->next = NULL;
  154.         a->prev = NULL;
  155.         a -> nazwa[MAX] = tab[MAX];
  156.         a ->ciastko->liczba=1;
  157.  
  158.          glowny->prev = a;
  159.          a->next = glowny;
  160.          glowny = a;
  161.     }
  162.     aktualny = porownaj(tab[MAX], i);
  163.  
  164.     a = (Tacka*)malloc(sizeof(struct tacka));
  165.     a->next = NULL;
  166.     a->prev = NULL;
  167.     a -> nazwa[MAX] = tab[MAX];
  168.     a ->ciastko->liczba=1;
  169.     while (aktualny)
  170.         aktualny = aktualny->next;
  171.     return ;
  172. }
  173.  
  174. void push(lista *l)
  175. {
  176.     lista element;
  177.  
  178.     element = (lista)malloc(sizeof(struct ciastko));
  179.     element->liczba++;
  180.     element->nast=*l;
  181.     *l=element;
  182. }
  183.  
  184. struct tacka* porownaj(char tab[MAX], int i)
  185. {
  186.     struct tacka *aktualny;
  187.     aktualny = glowny;
  188.     while (aktualny && aktualny->nazwa[i]<tab[i])
  189.     {
  190.        aktualny = aktualny->next;
  191.     };
  192.     if  (aktualny && aktualny -> nazwa[i] == tab[i])
  193.     {
  194.         porownaj(tab[MAX], i+1);
  195.     };
  196.     return aktualny;
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement