Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX 20
- void dodaj (char tab[MAX], int i);
- void ruch_dostawcy();
- struct tacka* porownaj(char tab[MAX], int i);
- void przekrec_tacke_w_lewo();
- void przekrec_tacke_w_prawo();
- typedef struct tacka
- {
- char *nazwa[MAX];
- struct tacka *next;
- struct tacka *prev;
- struct ciastko *ciastko;
- }Tacka;
- struct ciastko
- {
- int liczba;
- struct ciastko *nast;
- };
- typedef struct ciastko elListy;
- typedef elListy *lista;
- struct tacka *obecny = NULL;
- struct tacka *glowny = NULL;
- int main()
- {
- char ch;
- printf("Tura zjadacza ciasteczek wybierz:\n");
- printf("1.Zjedz ciasteczko lezace przed Toba\n");
- printf("2.Przekrec tacke w prawo\n");
- printf("3.przekrec tacke w lewo\n");
- printf("4.Oddaj ruch dostawcy ciasteczek\n");
- printf("5.Zakoncz program\n");
- while ((ch = getchar())!= '5')
- {
- switch(ch)
- {
- case 1 :;// zjedz_ciastko();
- break;
- case 2 : przekrec_tacke_w_prawo();
- break;
- case 3 : przekrec_tacke_w_lewo();
- break;
- case 4 : ruch_dostawcy();
- break;
- default : break;
- };
- printf("Tura zjadacza ciasteczek wybierz:\n");
- printf("1.Zjedz ciasteczko lezace przed Toba\n");
- printf("2.Przekrec tacke w prawo\n");
- printf("3.przekrec tacke w lewo\n");
- printf("4.Oddaj ruch dostawcy ciasteczek\n");
- printf("5.Zakoncz program\n");
- if (!obecny)
- printf("Brak ciasteczek\n");
- else if(obecny)
- {
- printf("%8d\n", obecny ->ciastko->liczba);
- printf("%s",obecny->nazwa);
- };
- };
- return 0;
- }
- void przekrec_tacke_w_prawo()
- {
- obecny = obecny -> next;
- if (obecny)
- {
- return;
- }
- else
- {
- printf("Brak nastepnego elementu \n");
- obecny = obecny ->prev;
- return;
- };
- };
- void przekrec_tacke_w_lewo()
- {
- obecny = obecny -> prev;
- if (obecny)
- return;
- else
- {
- printf("Brak poprzedniego elementu \n");
- obecny = obecny ->next;
- return;
- };
- };
- void ruch_dostawcy()
- {
- char *tab[MAX];
- printf("Podaj nazwe ciastka: (pusty wiersz konczy dodawanie):\n");
- scanf("%s",tab[MAX]);
- while (tab[0] != '\0')
- {
- struct tacka *aktualny;
- if (!glowny)
- {
- aktualny = (Tacka*)malloc(sizeof(struct tacka));
- strcpy(aktualny->nazwa, tab[MAX]);
- aktualny->ciastko->liczba=1;
- glowny = aktualny;
- obecny = aktualny;
- }
- else
- {
- aktualny = glowny;
- while (aktualny)
- {
- if(aktualny->nazwa==tab[MAX])
- {
- struct ciastko *akt;
- push(akt);
- };
- aktualny = aktualny ->next;
- }//konczy while
- }//konczy else
- int n = 0;
- dodaj(tab[MAX], n);
- printf("Podaj nazwe ciastka: (pusty wiersz konczy dodawanie):\n");
- scanf("%s",tab[MAX]);
- }
- return 0;
- }
- void dodaj (char tab[MAX], int i)
- {
- struct tacka *a;
- struct tacka *aktualny;
- aktualny = glowny;
- if (aktualny->nazwa[i]<tab[i])
- {
- a = (Tacka*)malloc(sizeof(struct tacka));
- a->next = NULL;
- a->prev = NULL;
- a -> nazwa[MAX] = tab[MAX];
- a ->ciastko->liczba=1;
- glowny->prev = a;
- a->next = glowny;
- glowny = a;
- }
- aktualny = porownaj(tab[MAX], i);
- a = (Tacka*)malloc(sizeof(struct tacka));
- a->next = NULL;
- a->prev = NULL;
- a -> nazwa[MAX] = tab[MAX];
- a ->ciastko->liczba=1;
- while (aktualny)
- aktualny = aktualny->next;
- return ;
- }
- void push(lista *l)
- {
- lista element;
- element = (lista)malloc(sizeof(struct ciastko));
- element->liczba++;
- element->nast=*l;
- *l=element;
- }
- struct tacka* porownaj(char tab[MAX], int i)
- {
- struct tacka *aktualny;
- aktualny = glowny;
- while (aktualny && aktualny->nazwa[i]<tab[i])
- {
- aktualny = aktualny->next;
- };
- if (aktualny && aktualny -> nazwa[i] == tab[i])
- {
- porownaj(tab[MAX], i+1);
- };
- return aktualny;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement