Advertisement
Guest User

Untitled

a guest
May 20th, 2018
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.71 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define LN 50
  4. #define ROZMIAR 10
  5.  
  6. struct rekord {
  7.     char imie[LN];
  8.     char nazwisko[LN];
  9.     int rok_urodzenia;
  10.     char numer_konta[LN];
  11.     char nazwa_banku[LN];
  12.     float srodki;
  13. };
  14.  
  15. void wyswietl(struct rekord *wsk, int max)
  16. {
  17.     for (int n = 0; n < max; n++)
  18.     {
  19.         printf("Imie: %s\nNaziwsko: %s\nRok urodzenia: %d\nNumer konta: %s\nNazwa banku: %s\nSrodki: %.2f\n\n", (wsk + n)->imie, (wsk + n)->nazwisko, (wsk + n)->rok_urodzenia, (wsk + n)->numer_konta, (wsk + n)->nazwa_banku, (wsk + n)->srodki);
  20.     }
  21. }
  22.  
  23. void wyswietl_dana_osobe(struct rekord *wsk, int n)
  24. {
  25.     printf("Imie: %s\nNaziwsko: %s\nRok urodzenia: %d\nNumer konta: %s\nNazwa banku: %s\nSrodki: %.2f\n\n", (wsk + n)->imie, (wsk + n)->nazwisko, (wsk + n)->rok_urodzenia, (wsk + n)->numer_konta, (wsk + n)->nazwa_banku, (wsk + n)->srodki);
  26.  
  27. }
  28.  
  29. struct rekord* najmniejsza_wartosc(struct rekord* wsk, int max)
  30. {
  31.     struct rekord *najmniejsza;
  32.     najmniejsza = wsk;
  33.     for (int i = 1; i < max; i++)
  34.     {
  35.         if (najmniejsza->srodki >(wsk + i)->srodki)
  36.             najmniejsza = wsk + i;
  37.     }
  38.     return(najmniejsza);
  39.  
  40. }
  41.  
  42. struct rekord* najwieksza_wartosc(struct rekord* wsk, int max)
  43. {
  44.     struct rekord *najwieksza;
  45.     najwieksza = wsk;
  46.     for (int i = 1; i < max; i++)
  47.     {
  48.         if (najwieksza->srodki < (wsk + i)->srodki)
  49.             najwieksza = wsk + i;
  50.     }
  51.     return(najwieksza);
  52. }
  53.  
  54. void sumuj_srodki(struct rekord* wsk, int max)
  55. {
  56.     float suma = 0;
  57.  
  58.     for (int m = 0; m < max; m++)
  59.     {
  60.         suma += (wsk + m)->srodki;
  61.     }
  62.  
  63.     printf("Suma srodkow wszystkich uzytkownikow to: %.2f\n\n", suma);
  64. }
  65.  
  66. void dodaj(struct rekord *wsk, int max)
  67. {
  68.     for (int i = 0; i < max; i++)
  69.     {
  70.         printf("Podaj imie:\n");
  71.         gets((wsk + i)->imie);
  72.  
  73.         printf("Podaj nazwisko:\n");
  74.         gets((wsk + i)->nazwisko);
  75.  
  76.         printf("Podaj rok urodzenia:\n");
  77.         scanf_s(" %d", &(wsk + i)->rok_urodzenia);
  78.  
  79.         rewind(stdin);
  80.  
  81.         printf("Podaj numer konta:\n");
  82.         gets((wsk + i)->numer_konta);
  83.  
  84.         printf("Podaj nazwe banku:\n");
  85.         gets((wsk + i)->nazwa_banku);
  86.  
  87.         printf("Podaj srodki:\n");
  88.         scanf_s("%f", &(wsk + i)->srodki);
  89.  
  90.         printf("\n");
  91.  
  92.         rewind(stdin);
  93.     }
  94.  
  95. }
  96.  
  97. int main(void)
  98. {
  99.     struct rekord* wsk;
  100.     struct rekord* wsk2;
  101.  
  102.     int operacja;
  103.     char wybor;
  104.  
  105.     int i = 0;
  106.  
  107.     int liczba_osob;
  108.     int pamiec = 2;
  109.  
  110.     int dana_osoba;
  111.  
  112.     struct rekord* osoba; //dawna tablica z [ROZMIAR]
  113.  
  114.     printf("STRUKTURY\n\nWprowadz osoby\nIle osob chcesz wpisac: ");
  115.  
  116.     scanf_s("%d", &liczba_osob);
  117.  
  118.     rewind(stdin);
  119.  
  120.     osoba = (struct dane*) malloc(liczba_osob * sizeof(*osoba));
  121.  
  122.     if (liczba_osob >= 1)
  123.     {
  124.         rewind(stdin);
  125.         printf("\nTeraz dodaj osoby\n");
  126.         dodaj(osoba, liczba_osob);
  127.     }
  128.     else
  129.     {
  130.         printf("Nie mozesz wpisac 0 osob!\n");
  131.     }
  132.  
  133.     rewind(stdin);
  134.  
  135.     for (;; i++)
  136.     {
  137.  
  138.         printf("Wybierz, co chcesz zrobic:\n1 - wyswietl wszystkie osoby\n2 - wyswietl najmniej srodkow\n3 - wyswietl najwiecej srodkow\n4 - wyswietl sume wszystkich srodkow\n5 - wyszukaj dana osobe\n\nWpisz opcje: ");
  139.  
  140.         scanf_s("%d", &operacja);
  141.         rewind(stdin);
  142.  
  143.         switch (operacja)
  144.         {
  145.  
  146.         case 1:
  147.             if (liczba_osob == 0)
  148.             {
  149.                 printf("Wpisales 0 osob! Wlacz program ponownie i wpisz osoby ponownie\n");
  150.             }
  151.             else
  152.             {
  153.                 wyswietl(osoba, liczba_osob);
  154.             }
  155.             break;
  156.  
  157.         case 2:
  158.             if (liczba_osob == 0)
  159.             {
  160.                 printf("Wpisales 0 osob! Wlacz program ponownie i wpisz osoby ponownie\n");
  161.             }
  162.             else
  163.             {
  164.                 wsk = najmniejsza_wartosc(osoba, liczba_osob);
  165.                 printf("Najmniejsza wartosc na koncie to: %.2f\n\n", (wsk->srodki));
  166.             }
  167.             break;
  168.  
  169.  
  170.         case 3:
  171.             if (liczba_osob == 0)
  172.             {
  173.                 printf("Wpisales 0 osob! Wlacz program ponownie i wpisz osoby ponownie\n");
  174.             }
  175.             else
  176.             {
  177.                 wsk2 = najwieksza_wartosc(osoba, liczba_osob);
  178.                 printf("Najwieksza wartosc na koncie to: %.2f\n\n", (wsk2->srodki));
  179.             }
  180.             break;
  181.  
  182.         case 4:
  183.             if (liczba_osob == 0)
  184.             {
  185.                 printf("Wpisales 0 osob! Wlacz program ponownie i wpisz osoby ponownie\n");
  186.             }
  187.             else
  188.             {
  189.                 sumuj_srodki(osoba, liczba_osob);
  190.             }
  191.             break;
  192.  
  193.         case 5:
  194.             if (liczba_osob == 0)
  195.             {
  196.                 printf("Wpisales 0 osob! Wlacz program ponownie i wpisz osoby ponownie\n");
  197.             }
  198.             else
  199.             {
  200.                 printf("Ktora osobe chcesz wyswietlic: ");
  201.                 scanf_s("%d", &dana_osoba);
  202.                 if (dana_osoba > liczba_osob)
  203.                 {
  204.                     printf("Nie ma takiej osoby\n");
  205.                 }
  206.                 else
  207.                 {
  208.                     wyswietl_dana_osobe(osoba, dana_osoba - 1);
  209.                 }
  210.  
  211.             }
  212.             break;
  213.  
  214.         default:
  215.             rewind(stdin);
  216.             printf("Nie ma takiej opcji!\n\n");
  217.             break;
  218.  
  219.         }
  220.  
  221.         printf("Czy chcesz kontynuowac? t -> tak / inny znak -> nie: ");
  222.         scanf_s(" %c", &wybor);
  223.         printf("\n");
  224.  
  225.         if (wybor == 't')
  226.         {
  227.             continue;
  228.             rewind(stdin);
  229.         }
  230.  
  231.         else
  232.         {
  233.             break;
  234.         }
  235.  
  236.     }
  237.  
  238.     free(osoba);
  239.     system("PAUSE");
  240.     return 0;
  241. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement