Advertisement
Guest User

Untitled

a guest
Jun 5th, 2018
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.58 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <string.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. #define nullptr NULL
  7. #define XD 50
  8. char wpiszimie[XD];
  9.  
  10.  
  11.  
  12. struct rekord {
  13. char imie[XD];
  14. char nazwisko[XD];
  15. char numer_konta[XD];
  16. char nazwa_banku[XD];
  17. int rok_urodzenia;
  18. float srodki;
  19. };
  20.  
  21. typedef struct rekord Pozycja;
  22. typedef struct wezel
  23. {
  24. Pozycja pozycja;
  25. wezel*nastepny;
  26. }Wezel;
  27. typedef Wezel*Lista;
  28.  
  29. void Inicjuj(Lista * lista) {
  30. *lista = NULL;
  31. }
  32.  
  33. bool czyListaPusta(Lista l) {
  34. if (l == NULL) {
  35. return true;
  36. }
  37. else return false;
  38. }
  39.  
  40. bool czyListaPelna(Lista l) {
  41. Wezel * wsk;
  42. bool status;
  43. wsk = (Wezel *)malloc(sizeof(Wezel));
  44. if (wsk == NULL) {
  45. status = true;
  46. }
  47. else
  48. status = false;
  49. free(wsk);
  50. return status;
  51. }
  52.  
  53. unsigned int LiczbaPozycji(Lista l) {
  54. unsigned int licznik = 0;
  55. while (l != NULL) {
  56. ++licznik;
  57. l = l->nastepny;
  58. }
  59. printf("%d", licznik);
  60. return licznik;
  61. }
  62. static void KopiujDoWezela(Pozycja pozycja, Wezel * wezel) {
  63. wezel->pozycja = pozycja;
  64. }
  65.  
  66. bool DodajPozycje(Pozycja pozycja, Lista *lista) {
  67. Wezel *nowy;
  68. Wezel *szuk = *lista;
  69. nowy = (Wezel *)malloc(sizeof(Wezel));
  70. if (nowy == NULL) {
  71. return false;
  72. }
  73. KopiujDoWezela(pozycja, nowy);
  74. nowy->nastepny = NULL;
  75. if (szuk == NULL) {
  76. *lista = nowy;
  77. }
  78. else {
  79. while (szuk->nastepny != NULL) szuk = szuk->nastepny;
  80. szuk->nastepny = nowy;
  81. }
  82. return true;
  83. }
  84.  
  85. void PrzejdzWykonaj(Lista l, void(*wfun)(Pozycja pozycja)) {
  86. while (l != NULL) {
  87. (*wfun)(l->pozycja);
  88. l = l->nastepny;
  89. }
  90. }
  91.  
  92. void drukuj(Pozycja pozycja) {
  93. printf("\n Imie: %s", pozycja.imie);
  94. printf("\n Nazwisko: %s", pozycja.nazwisko);
  95. printf("\n Rok Urodzenia: %d", pozycja.rok_urodzenia);
  96. printf("\n Nazwa Banku: %s", pozycja.nazwa_banku);
  97. printf("\n Numer Konta: %s", pozycja.numer_konta);
  98. printf("\n Srodki na koncie: %f", pozycja.srodki);
  99.  
  100. }
  101.  
  102.  
  103.  
  104. void PokazKlientow(Pozycja pozycja) {
  105.  
  106. printf("\n Imie: %s", pozycja.imie);
  107. printf("\n Nazwisko: %s", pozycja.nazwisko);
  108. printf("\n Rok Urodzenia: %d", pozycja.rok_urodzenia);
  109. printf("\n Nazwa Banku: %s", pozycja.nazwa_banku);
  110. printf("\n Numer Konta: %s", pozycja.numer_konta);
  111. printf("\n Srodki na koncie: %f\n\n\n\n", pozycja.srodki);
  112.  
  113. }
  114.  
  115. void pierwszaliteraimienia(Pozycja pozycja) {
  116. if (strncmp(pozycja.imie, wpiszimie, 1) == 0) {
  117. printf("\n Imie: %s", pozycja.imie);
  118. printf("\n Nazwisko: %s", pozycja.nazwisko);
  119. printf("\n Rok Urodzenia: %d", pozycja.rok_urodzenia);
  120. printf("\n Nazwa Banku: %s", pozycja.nazwa_banku);
  121. printf("\n Numer Konta: %s", pozycja.numer_konta);
  122. printf("\n Srodki na koncie: %f\n\n\n\n", pozycja.srodki);
  123. }
  124. else {
  125. printf("Nie ma takiej osoby\n\n\n\n");
  126. }
  127. }
  128.  
  129. void szukajsrodkow(Pozycja pozycja) {
  130. if (pozycja.srodki >= 100 && pozycja.srodki <= 100000) {
  131. printf("\n Imie: %s", pozycja.imie);
  132. printf("\n Nazwisko: %s", pozycja.nazwisko);
  133. printf("\n Rok Urodzenia: %d", pozycja.rok_urodzenia);
  134. printf("\n Nazwa Banku: %s", pozycja.nazwa_banku);
  135. printf("\n Numer Konta: %s", pozycja.numer_konta);
  136. printf("\n Srodki na koncie: %f\n\n", pozycja.srodki);
  137. }
  138. else {
  139. printf("Brak osob z kwota tym przedziale\n\n\n\n");
  140. }
  141. }
  142.  
  143. void sumuj_srodki(Lista l, unsigned int osoby1)
  144. {
  145. double suma;
  146. suma = 0;
  147. while (l != NULL)
  148. {
  149. suma += l->pozycja.srodki;
  150. l = l->nastepny;
  151. }
  152. printf("Suma wszystkich srodkow wynosi %.2f zl\n", suma);
  153.  
  154. }
  155.  
  156. Pozycja* maks(Lista l)
  157. {
  158. if (l != NULL) {
  159.  
  160. Pozycja *max = NULL;
  161. max = &(l->pozycja);
  162. while (l->nastepny != NULL)
  163. {
  164. if ((max->srodki) < ((l->nastepny->pozycja.srodki)))
  165. max = &(l->nastepny->pozycja);
  166. l = l->nastepny;
  167. }
  168. return(max);
  169. }
  170. }
  171.  
  172. Pozycja* mini(Lista l)
  173. {
  174. if (l != NULL) {
  175.  
  176. Pozycja *min = NULL;
  177. min = &(l->pozycja);
  178. while (l->nastepny != NULL)
  179. {
  180. if ((min->srodki) > ((l->nastepny->pozycja.srodki)))
  181. min = &(l->nastepny->pozycja);
  182. l = l->nastepny;
  183.  
  184. }
  185. return(min);
  186.  
  187. }
  188. }
  189.  
  190.  
  191.  
  192. int main(void) {
  193.  
  194. Pozycja* wsk;
  195. Pozycja* wsk2;
  196. Pozycja* osoba;
  197. Lista ksiegozbior;
  198. Pozycja pierwsza;
  199. Inicjuj(&ksiegozbior);
  200. char akcja;
  201. if (czyListaPelna(ksiegozbior)) {
  202. exit(1);
  203. }
  204.  
  205. do {
  206. printf("\t\t~~~~~~~~~~~~~~Welcome~~~~~~~~~~~~~~");
  207. printf("\n\t\t Jaka akcje chcesz wykonac?");
  208. printf("\n\t\t Dodaj nowa osobe (A)");
  209. printf("\n\t\t Lista wszystkich osob(B)");
  210. printf("\n\t\t Osoby majace srodki w przedziale od 100 do 100000(C)");
  211. printf("\n\t\t Osoby po pierwszej literze imienia(D)");
  212. printf("\n\t\t Osoba z najmniejszymi srodkami(E)");
  213. printf("\n\t\t Osoba z najwiekszymi srodkami(F)");
  214. printf("\n\t\t Opusc program(G)\n");
  215. scanf_s(" %c", &akcja);
  216. rewind(stdin);
  217.  
  218. switch (akcja) {
  219. case 'A':
  220. puts("\n\t\t\tPodaj imie tej osoby: ");
  221. while (gets_s(pierwsza.imie, XD) != NULL && pierwsza.imie[0] != '\0') {
  222. printf("\n\t\t\tPodaj nazwisko tej osoby: \n");
  223. gets_s(pierwsza.nazwisko);
  224. printf("\n\t\t\tPodaj rok urodzenia tej osoby: \n");
  225. scanf_s(" %d", &pierwsza.rok_urodzenia);
  226. rewind(stdin);
  227. puts("\n\t\t\tPodaj numer konta: \n");
  228. gets_s(pierwsza.numer_konta, XD);
  229. printf("\n\t\t\tPodaj nazwe banku: \n");
  230. gets_s(pierwsza.nazwa_banku, XD);
  231. printf("\n\t\t\tPodaj srodki tej osoby: \n");
  232. scanf_s(" %f", &pierwsza.srodki);
  233. while (getchar() != '\n') continue;
  234. if (DodajPozycje(pierwsza, &ksiegozbior) == false) {
  235. }
  236. if (czyListaPelna(ksiegozbior)) {
  237. }
  238. puts("\n\t\t\t Imie kolejnej osoby(ew. enter)");
  239. }
  240. break;
  241.  
  242. case 'B':
  243. if (czyListaPusta(ksiegozbior))
  244. {
  245. printf("Brak osob!");
  246. }
  247. else
  248. {
  249. printf("Lista:");
  250. PrzejdzWykonaj(ksiegozbior, PokazKlientow);
  251.  
  252. }
  253. break;
  254.  
  255. case 'C':
  256. printf("Osoby ktorych srodki sa w danym przedziale: \n");
  257. PrzejdzWykonaj(ksiegozbior, szukajsrodkow);
  258.  
  259. break;
  260.  
  261. case 'D':
  262. if (czyListaPusta(ksiegozbior)) {
  263. printf("\n\t\tBrak danych!");
  264. }
  265. else {
  266. printf("Wpisz pierwsza litere imienia: ");
  267. rewind(stdin);
  268. scanf_s(" &c", &wpiszimie);
  269. rewind(stdin);
  270. PrzejdzWykonaj(ksiegozbior, pierwszaliteraimienia);
  271. }
  272. break;
  273. case 'E':
  274.  
  275. wsk2 = mini(ksiegozbior);
  276. printf("Najmniej srodkow posiada:\n %s\n %s\n %.2f zl\n", wsk2->imie, wsk2->nazwisko, wsk2->srodki);
  277.  
  278. break;
  279.  
  280. case 'F':
  281.  
  282. wsk = maks(ksiegozbior);
  283. printf("Najwiecej srodkow posiada:\n %s\n %s\n %.2f zl\n", wsk->imie, wsk->nazwisko, wsk->srodki);
  284. break;
  285.  
  286. case'G':
  287. exit(1);
  288. break;
  289. }
  290. } while (akcja == 'A' || akcja == 'B' || akcja == 'C' || akcja == 'D' || akcja =='E' || akcja == 'F');
  291.  
  292. return 0;
  293.  
  294. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement