Advertisement
Guest User

Untitled

a guest
Jan 21st, 2018
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 14.25 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <time.h>
  6.  
  7.  
  8.  
  9. typedef struct Skladnik {
  10.     char nazwa[100];    // nazwa skladnika
  11.     double ilosc;       // ilosc danego skladnika
  12.     char jednostka[10]; // szt, gramy itd..
  13. } Skladnik;
  14.  
  15. typedef struct Przepis {
  16.     char nazwa[100];
  17.     char kategoria[100];
  18.     int ilosc_osob;
  19.  
  20.     int ilosc_skladnikow;
  21.     int aktualny_skladnik;
  22.     Skladnik** skladniki;
  23. } Przepis;
  24.  
  25. typedef struct Element {
  26.     Przepis* przepis;
  27.     struct Element* nast, *poprz;
  28. } Element;
  29.  
  30. typedef struct Lista {
  31.     struct Element* poczatek, *koniec;
  32.  
  33.     int rozmiar;
  34. } Lista;
  35.  
  36. Lista* stworz_liste() {
  37.     Lista* l = (Lista*)calloc(1, sizeof(Lista));
  38.     l->rozmiar = 0;
  39.     l->poczatek = NULL;
  40.     l->koniec = NULL;
  41.  
  42.     return l;
  43. }
  44.  
  45. void wypisz_skladnik(Skladnik* s) {
  46.     if (s == NULL) {
  47.         printf("Przekazano skladnik NULL do wypisania.\n");
  48.         return;
  49.     }
  50.  
  51.     printf("%s %.2lf %s\n", s->nazwa, s->ilosc, s->jednostka);
  52. }
  53. void wypisz_skladniki(Lista* l) {
  54.     int i, numer;
  55.     Element* tmp = l->poczatek;
  56.  
  57.     if (l->poczatek == NULL) {
  58.         printf("Brak przepisow.\n");
  59.         return;
  60.     }
  61.  
  62.     printf("Podaj numer przepisu do stworzenia listy zakupow: ");
  63.     scanf("%d", &numer);
  64.  
  65.     // bo liczymy od 0
  66.     numer--;
  67.  
  68.     // sprawdzenie czy poprawny numer
  69.     if (numer < 0 || numer >= l->rozmiar) {
  70.         printf("Niepoprawny numer. Numer powinien byc miedzy 1 a %d.\n", l->rozmiar - 1);
  71.         return;
  72.     }
  73.  
  74.     i = 0;
  75.     while (tmp != NULL) {
  76.         if (i == numer) {
  77.             printf("\nDo przepisu o nazwie: %s\n", tmp->przepis->nazwa);
  78.             printf("Nalezy zakupic nastepujace skladniki: \n");
  79.             for (i = 0; i < tmp->przepis->ilosc_skladnikow; i++) {
  80.                 printf("\t");
  81.                 wypisz_skladnik(tmp->przepis->skladniki[i]);
  82.             }
  83.             return;
  84.         }
  85.         tmp = tmp->nast;
  86.         i++;
  87.     }
  88.  
  89.  
  90. }
  91. Skladnik* stworz_skladnik(char* nazwa, double ilosc, char* jednostka) {
  92.     Skladnik* nowy = (Skladnik*)calloc(1, sizeof(Skladnik));
  93.  
  94.     if (nowy == NULL) {
  95.         printf("Nie udalo sie zaalokowac pamieci na skladnik.\n");
  96.         return NULL;
  97.     }
  98.  
  99.     nowy->ilosc = ilosc;
  100.  
  101.     strcpy(nowy->nazwa, nazwa);
  102.     strcpy(nowy->jednostka, jednostka);
  103.  
  104.     return nowy;
  105. }
  106. Przepis* stworz_przepis(char* nazwa, char* kategoria, int ilosc_osob, int ilosc_skladnikow) {
  107.     Przepis* nowy = (Przepis*)calloc(1, sizeof(Przepis));
  108.  
  109.     if (nowy == NULL) {
  110.         printf("Nie udalo sie zaalokowac pamieci na przepis.\n");
  111.         return NULL;
  112.     }
  113.     strcpy(nowy->nazwa, nazwa);
  114.     strcpy(nowy->kategoria, kategoria);
  115.  
  116.     nowy->ilosc_osob = ilosc_osob;
  117.     nowy->ilosc_skladnikow = ilosc_skladnikow;
  118.     nowy->aktualny_skladnik = 0;
  119.  
  120.     // alokacja miejsca na skladniki
  121.     nowy->skladniki = (Skladnik**)calloc(nowy->ilosc_skladnikow, sizeof(Skladnik*));
  122.  
  123.  
  124.     return nowy;
  125. }
  126. // dodaje skladnik do przepisy
  127. void dodaj_skladnik(Przepis* p, Skladnik* s) {
  128.     if (p->aktualny_skladnik >= p->ilosc_skladnikow) {
  129.         printf("Nie mozna dodac wiecej skladnikow do tego przepisu.");
  130.     }
  131.     p->skladniki[p->aktualny_skladnik] = s;
  132.     p->aktualny_skladnik++;
  133. }
  134. void wstaw(Lista* l, Przepis* p) {
  135.     Element* nowy = (Element*)calloc(1, sizeof(Element));
  136.     Element* ostatni = l->poczatek;
  137.  
  138.     l->rozmiar++;
  139.  
  140.     nowy->przepis = p;
  141.  
  142.     // jezeli nie ma jeszcze zadnych elementow
  143.     if (l->poczatek == NULL) {
  144.         nowy->poprz = NULL;
  145.         l->poczatek = nowy;
  146.         return;
  147.     }
  148.  
  149.     // jezeli sa to przechodzi sie na koniec i dodaje
  150.     while (ostatni->nast != NULL) {
  151.         ostatni = ostatni->nast;
  152.     }
  153.  
  154.     ostatni->nast = nowy;
  155.     nowy->poprz = ostatni;
  156.     l->koniec = nowy->poprz;
  157. }
  158. void wypisz_przepis(Przepis* p) {
  159.     int i;
  160.  
  161.     printf("%s\n", p->nazwa);
  162.     printf("Kategoria %s\n", p->kategoria);
  163.     printf("Ilosc osob: %d\n", p->ilosc_osob);
  164.     printf("Ilosc skladnikow: %d\n", p->ilosc_skladnikow);
  165.     printf("Skladniki: \n");
  166.  
  167.     for (i = 0; i < p->ilosc_skladnikow; i++) {
  168.         printf("\t");
  169.         wypisz_skladnik(p->skladniki[i]);
  170.     }
  171.  
  172.     printf("\n");
  173.  
  174. }
  175. void wypisz_liste(Lista* l) {
  176.     int i = 0;
  177.     Element* e = l->poczatek;
  178.  
  179.     if (l->poczatek == NULL) {
  180.         printf("Brak przepisow.\n");
  181.         return;
  182.     }
  183.  
  184.     printf("\nLiczba przepisow: %d\n\n", l->rozmiar);
  185.  
  186.  
  187.     while (e != NULL) {
  188.         printf("%d)\n", ++i);
  189.         wypisz_przepis(e->przepis);
  190.         e = e->nast;
  191.     }
  192.  
  193.  
  194. }
  195.  
  196. void zapisz_przepis(FILE* f, Przepis* p) {
  197.     int i;
  198.     if (f == NULL) {
  199.         printf("Nie moge zapisac do zamknietego pliku.\n");
  200.         return;
  201.     }
  202.  
  203.     fprintf(f, "%s;%s;%d;%d", p->nazwa, p->kategoria, p->ilosc_osob, p->ilosc_skladnikow);
  204.  
  205.     // teraz trzeba zapisac skladniki
  206.     for (i = 0; i < p->ilosc_skladnikow; i++) {
  207.         fprintf(f, ";%s;%lf;%s", p->skladniki[i]->nazwa, p->skladniki[i]->ilosc, p->skladniki[i]->jednostka);
  208.     }
  209.     fprintf(f, "\n");
  210. }
  211.  
  212. void zapisz_przepisy(Lista* l) {
  213.     char nazwa[100];
  214.     FILE* f;
  215.     Element* e = l->poczatek;
  216.     if (l->poczatek == NULL) {
  217.         printf("Brak przepisow.\n");
  218.         return;
  219.     }
  220.     printf("Podaj nazwe pliku: ");
  221.     scanf("%s", nazwa);
  222.  
  223.     f = fopen(nazwa, "w");
  224.  
  225.     if (f == NULL) {
  226.         printf("Nie udalo sie otworzyc pliku do zapisu.\n");
  227.         return;
  228.     }
  229.  
  230.     while (e != NULL) {
  231.         zapisz_przepis(f, e->przepis);
  232.         e = e->nast;
  233.     }
  234.  
  235.     fclose(f);
  236. }
  237.  
  238. Przepis* przepis_z_klawiatury() {
  239.     int wybor, i;
  240.     Przepis* p = (Przepis*)calloc(1, sizeof(Przepis));
  241.     Skladnik* s;
  242.  
  243.     printf("Podaj nazwe przepisu: ");
  244.     scanf("\n%[^\n]", p->nazwa);
  245.  
  246.     printf("Wybierz kategorie: \n");
  247.     printf("1 - Sniadanie, 2 - Obiad, 3 - Kolacja, 4 - Deser: ");
  248.     scanf("%d", &wybor);
  249.  
  250.     if (wybor == 1) {
  251.         strcpy(p->kategoria, "sniadanie");
  252.     }
  253.     else if (wybor == 2) {
  254.         strcpy(p->kategoria, "obiad");
  255.     }
  256.     else if (wybor == 3) {
  257.         strcpy(p->kategoria, "kolacja");
  258.     }
  259.     else if (wybor == 4) {
  260.         strcpy(p->kategoria, "deser");
  261.     }
  262.     else {
  263.         printf("Niepoprawna kategoria.\n");
  264.         free(p);
  265.         return NULL;
  266.     }
  267.  
  268.     printf("Podaj liczbe osob: ");
  269.     scanf("%d", &p->ilosc_osob);
  270.     printf("Podaj liczbe skladnikow: ");
  271.     scanf("%d", &p->ilosc_skladnikow);
  272.  
  273.     p->aktualny_skladnik = 0;
  274.  
  275.     p->skladniki = (Skladnik**)calloc(p->ilosc_skladnikow, sizeof(Skladnik*));
  276.  
  277.     printf("Uzupelnij skladniki: \n");
  278.     for (i = 0; i < p->ilosc_skladnikow; i++) {
  279.         s = (Skladnik*)calloc(1, sizeof(Skladnik));
  280.         printf("Podaj nazwe: ");
  281.         scanf("\n%[^\n]", s->nazwa);
  282.  
  283.         printf("Podaj ilosc: ");
  284.         scanf("%lf", &s->ilosc);
  285.  
  286.         printf("Podaj jednostke: ");
  287.         scanf("%s", s->jednostka);
  288.         dodaj_skladnik(p, s);
  289.  
  290.     }
  291.     return p;
  292. }
  293. Lista* wczytaj_liste() {
  294.     FILE* f;
  295.     char nazwa[100];
  296.     char linijka[500];
  297.     char skladniki[300];
  298.    
  299.     // dane do przepisu i skladnika
  300.     char n[100], k[100], j[10];
  301.     int io, is;
  302.     double ilosc;
  303.  
  304.     int i;
  305.  
  306.  
  307.     Lista* l = stworz_liste();
  308.     Przepis* p;
  309.  
  310.     printf("Podaj nazwe pliku: ");
  311.     scanf("%s", nazwa);
  312.  
  313.     f = fopen(nazwa, "r");
  314.  
  315.     if (f == NULL) {
  316.         printf("Nie udalo sie otworzyc pliku do odczytu.\n");
  317.         return NULL;
  318.     }
  319.  
  320.     while (!feof(f)) {
  321.         fgets(linijka, 500, f);
  322.         if (strcmp(linijka, "\n") == 0) {
  323.             break; // jezeli wczytano pusta linijke to koniec
  324.         }
  325.         sscanf(linijka, "%[^;] ; %[^;] ; %d ; %d ; %[^\n]", n, k, &io, &is, skladniki);
  326.  
  327.         p = stworz_przepis(n, k, io, is);
  328.  
  329.         // teraz trzeba przetworzyc skladniki
  330.         for (i = 0; i < p->ilosc_skladnikow; i++) {
  331.             sscanf(skladniki, "%[^;] ; %lf ; %[^;] ; %[^\n]", n, &ilosc, k, skladniki);
  332.             //printf("Skladnik %s %lf %s\n", n, ilosc, k);
  333.             dodaj_skladnik(p, stworz_skladnik(n, ilosc, k));
  334.         }
  335.         wstaw(l, p);
  336.     }
  337.  
  338.     return l;
  339. }
  340.  
  341. Lista* wczytaj_liste_domyslnie() {
  342.     FILE* f;
  343.     char nazwa[13] = "przepisy.csv";
  344.     char linijka[500];
  345.     char skladniki[300];
  346.  
  347.     // dane do przepisu i skladnika
  348.     char n[100], k[100], j[10];
  349.     int io, is;
  350.     double ilosc;
  351.  
  352.     int i;
  353.  
  354.     Lista* l = stworz_liste();
  355.     Przepis* p;
  356.  
  357.     f = fopen(nazwa, "r");
  358.  
  359.     if (f == NULL) {
  360.         printf("Nie udalo sie otworzyc pliku do odczytu.\n");
  361.         return NULL;
  362.     }
  363.     while (!feof(f)) {
  364.         fgets(linijka, 500, f);
  365.         if (strcmp(linijka, "\n") == 0) {
  366.             break; // jezeli wczytano pusta linijke to koniec
  367.         }
  368.         sscanf(linijka, "%[^;] ; %[^;] ; %d ; %d ; %[^\n]", n, k, &io, &is, skladniki);
  369.  
  370.         p = stworz_przepis(n, k, io, is);
  371.  
  372.         // teraz trzeba przetworzyc skladniki
  373.         for (i = 0; i < p->ilosc_skladnikow; i++) {
  374.             sscanf(skladniki, "%[^;] ; %lf ; %[^;] ; %[^\n]", n, &ilosc, k, skladniki);
  375.             //printf("Skladnik %s %lf %s\n", n, ilosc, k);
  376.             dodaj_skladnik(p, stworz_skladnik(n, ilosc, k));
  377.         }
  378.         wstaw(l, p);
  379.     }
  380.  
  381.     return l;
  382. }
  383.  
  384. void usun_przepis(Lista* l) {
  385.     int i, numer;
  386.     Element* tmp, *do_usuniecia = NULL;
  387.  
  388.     if (l->poczatek == NULL) {
  389.         printf("Brak przepisow.\n");
  390.         return;
  391.     }
  392.  
  393.     printf("Podaj numer przepisu do usuniecia: ");
  394.     scanf("%d", &numer);
  395.  
  396.     // bo liczymy od 0
  397.     numer--;
  398.  
  399.     // sprawdzenie czy poprawny numer
  400.     if (numer < 0 || numer >= l->rozmiar) {
  401.         printf("Niepoprawny numer. Numer powinien byc miedzy 1 a %d.\n", l->rozmiar - 1);
  402.         return;
  403.     }
  404.  
  405.     tmp = l->poczatek;
  406.  
  407.     i = 0;
  408.     while (tmp != NULL) {
  409.         do_usuniecia = tmp;
  410.         if (i == numer) {
  411.             break;
  412.         }
  413.         tmp = tmp->nast;
  414.         i++;
  415.     }
  416.  
  417.  
  418.     printf("Usuwam:\n");
  419.     wypisz_przepis(do_usuniecia->przepis);
  420.  
  421.     if (l->poczatek == do_usuniecia) { // jezeli usuwamy z poczatku
  422.         l->poczatek = do_usuniecia->nast;
  423.     }
  424.  
  425.     // zmieni nast jezeli element nie jest na koncu
  426.     if (do_usuniecia->nast != NULL) {
  427.         l->koniec = l->koniec->poprz;
  428.         do_usuniecia->nast->poprz = do_usuniecia->poprz;
  429.     }
  430.  
  431.     // zmieni poprz jezeli element nie jest piewrszy
  432.     if (do_usuniecia->poprz != NULL) {
  433.         do_usuniecia->poprz->nast = do_usuniecia->nast;
  434.     }
  435.  
  436.     // zwolnienie pamieci
  437.     free(do_usuniecia->przepis->skladniki);
  438.     free(do_usuniecia->przepis);
  439.     free(do_usuniecia);
  440.  
  441.     // zmniejszenie ilosci elementow
  442.     l->rozmiar--;
  443. }
  444.  
  445. char* pomniejsz_znaki(const char*text)
  446. {
  447.     int i = 0;
  448.     char *c = malloc(strlen(text) * sizeof(char));
  449.     strcpy(c, text);
  450.     for (int i = 0; text[i]; i++) { //po wykonaniu iteracji to sie zwalnia, bo konczy sie blok instrukcji, jest czyszczony. statyczny - jest wykorzystywany tylko w bloku instrunkji, tak jak w if
  451.         c[i] = tolower(text[i]);
  452.     }
  453.     return c;
  454. }
  455.  
  456. void wyszukaj_po_skladniku(Lista* l) {
  457.     char szukany[100];
  458.     Element* e;
  459.     int i;
  460.     if (l->poczatek == NULL) {
  461.         printf("Brak przepisow.\n");
  462.         return;
  463.     }
  464.  
  465.     printf("Podaj nazwe szukanego skladnika: ");
  466.     scanf("%s", szukany);
  467.     e = l->poczatek;
  468.  
  469.  
  470.     while (e != NULL) {
  471.         for (i = 0; i < e->przepis->ilosc_skladnikow; i++) {
  472.             if (strstr(pomniejsz_znaki(szukany), pomniejsz_znaki(e->przepis->skladniki[i]->nazwa)) != NULL) {
  473.                 wypisz_przepis(e->przepis);
  474.             }
  475.         }
  476.         e = e->nast;
  477.     }
  478.  
  479. }
  480.  
  481. void wylosuj_przepis(Lista* l) {
  482.     int i = 0, n;
  483.  
  484.     if (l->poczatek == NULL) {
  485.         printf("Brak przepisow.\n");
  486.         return;
  487.     }
  488.     Element* e = l->poczatek;
  489.  
  490.  
  491.     n = rand() % l->rozmiar;
  492.  
  493.     printf("Losuje przepis: \n");
  494.     while (e != NULL) {
  495.         if (i == n) {
  496.             wypisz_przepis(e->przepis);
  497.             break;
  498.         }
  499.         e = e->nast;
  500.         i++;
  501.     }
  502. }
  503.  
  504. void wyczysc_liste(Lista* l) {
  505.     Element* e, *tmp;
  506.     if (l->poczatek == NULL) {
  507.         printf("Brak przepisow.\n");
  508.         return;
  509.     }
  510.     e = l->poczatek;
  511.  
  512.     while (e != NULL) {
  513.         tmp = e->nast;
  514.  
  515.         free(e->przepis->skladniki);
  516.         free(e->przepis);
  517.         free(e);
  518.  
  519.         e = tmp;
  520.     }
  521.  
  522.     l->rozmiar = 0;
  523.     l->poczatek = NULL;
  524.     l->koniec = NULL;
  525. }
  526. /* function to swap data of two nodes a and b*/
  527. void zamien(Element* a, Element* b)
  528. {
  529.     Przepis* temp = a->przepis;
  530.     a->przepis = b->przepis;
  531.     b->przepis = temp;
  532. }
  533. //*Porownujace elementy, jezeli takie same = 0, jezeli nalezy przestawic > 1, jezeli zachowac kolejnosc < -1
  534. int porownaj_nazwy(Element* a, Element* b) {
  535.     return strcmp(a->przepis->nazwa, b->przepis->nazwa);
  536. }
  537. int porownaj_kategorie(Element* a, Element* b) {
  538.     return strcmp(a->przepis->kategoria, b->przepis->kategoria);
  539. }
  540. void sortuj(Element* poczatek)
  541. {
  542.     int zamieniono, i;
  543.     Element* ptr1 = poczatek;
  544.     Element* lptr = NULL;
  545.  
  546.     int(*porownanie)(Element*, Element*);
  547.  
  548.     if (ptr1 == NULL)
  549.         return;
  550.  
  551.  
  552.     printf("1 - Sortuj po nazwie, 2 - Sortuj po kategorii: ");
  553.     scanf("%d", &i);
  554.     if (i == 1) {
  555.         porownanie = porownaj_nazwy;
  556.     }
  557.     else if (i == 2) {
  558.         porownanie = porownaj_kategorie;
  559.     }
  560.     else {
  561.         printf("Brak takiej opcji.\n");
  562.         return;
  563.     }
  564.  
  565.     do {
  566.         zamieniono = 0;
  567.         ptr1 = poczatek;
  568.  
  569.         while (ptr1->nast != lptr) {
  570.             if (porownanie(ptr1, ptr1->nast) > 0)
  571.             {
  572.                 zamien(ptr1, ptr1->nast);
  573.                 zamieniono = 1;
  574.             }
  575.             ptr1 = ptr1->nast;
  576.         }
  577.         lptr = ptr1;
  578.     } while (zamieniono);
  579. }
  580.  
  581. void zmnien_ilosc_osob(Lista* l) {
  582.     if (l->poczatek == NULL) {
  583.         printf("Brak przepisow.\n");
  584.         return;
  585.     }
  586.     Element* e = l->poczatek;
  587.     int numer;
  588.     int nowa_ilosc_osob;
  589.  
  590.     printf("Podaj numer przepisu do edycji: ");
  591.     scanf("%d", &numer);
  592.  
  593.     numer--;
  594.  
  595.     if (numer < 0 || numer >= l->rozmiar) {
  596.         printf("Niepoprawny numer. Numer powinien byc miedzy 1 a %d.\n", l->rozmiar - 1);
  597.         return;
  598.     }
  599.  
  600.     printf("Podaj nowa ilosc osob:");
  601.     scanf("%d", &nowa_ilosc_osob);
  602.  
  603.     if (nowa_ilosc_osob <= 0)
  604.     {
  605.         printf("Niepoprawna ilosc osob.\n");
  606.         return;
  607.     }
  608.  
  609.  
  610.     Element* tmp = l->poczatek;
  611.     Element* do_zmiany = NULL;
  612.  
  613.     int i = 0;
  614.     while (tmp != NULL) {
  615.         do_zmiany = tmp;
  616.         if (i == numer) {
  617.             break;
  618.         }
  619.         tmp = tmp->nast;
  620.         i++;
  621.     }
  622.  
  623.     Przepis* do_edycji = do_zmiany->przepis;
  624.  
  625.     for (i = 0; i < do_edycji->ilosc_skladnikow; i++) {
  626.         double nowa_wartosc = do_edycji->skladniki[i]->ilosc / (double)do_edycji->ilosc_osob;
  627.         do_edycji->skladniki[i]->ilosc = nowa_wartosc* nowa_ilosc_osob;
  628.     }
  629.     do_edycji->ilosc_osob = nowa_ilosc_osob;
  630. }
  631.  
  632. void main() {
  633.     srand(time(NULL));
  634.     int wybor;
  635.     Lista* l = stworz_liste();
  636.     l = wczytaj_liste_domyslnie();
  637.     do {
  638.         printf("1) Dodaj przepis\n");
  639.         printf("2) Usun\n");
  640.         printf("3) Wczytaj\n");
  641.         printf("4) Zapisz\n");
  642.         printf("5) Wypisz\n");
  643.         printf("6) Wylosuj\n");
  644.         printf("7) Wyszukaj\n");
  645.         printf("8) Lista zakupow\n");
  646.         printf("9) Sortuj\n");
  647.         printf("10) Zmnien ilosc osob\n");
  648.         printf("11) Wyjscie\n");
  649.  
  650.         scanf("%d", &wybor);
  651.         system("cls");
  652.         switch (wybor) {
  653.         case 1:
  654.             wstaw(l, przepis_z_klawiatury());
  655.             break;
  656.         case 2:
  657.             usun_przepis(l);
  658.             break;
  659.         case 3:
  660.             l = wczytaj_liste();
  661.             break;
  662.         case 4:
  663.             zapisz_przepisy(l);
  664.             break;
  665.         case 5:
  666.             wypisz_liste(l);
  667.             break;
  668.         case 6:
  669.             wylosuj_przepis(l);
  670.             break;
  671.         case 7:
  672.             wyszukaj_po_skladniku(l);
  673.             break;
  674.         case 8:
  675.             wypisz_skladniki(l);
  676.             break;
  677.         case 9:
  678.             sortuj(l->poczatek);
  679.             break;
  680.         case 10:
  681.             zmnien_ilosc_osob(l);
  682.             break;
  683.         case 11:
  684.             break;
  685.         default:
  686.             printf("Brak takiej opcji.\n");
  687.  
  688.         }
  689.     } while (wybor != 11);
  690.  
  691.     wyczysc_liste(l);
  692.     return 0;
  693. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement