Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <string.h>
- #include <stdio.h>
- #include <stdlib.h>
- #define nullptr NULL
- #define XD 50
- char wpiszimie[XD];
- struct rekord {
- char imie[XD];
- char nazwisko[XD];
- char numer_konta[XD];
- char nazwa_banku[XD];
- int rok_urodzenia;
- float srodki;
- };
- typedef struct rekord Pozycja;
- typedef struct wezel
- {
- Pozycja pozycja;
- wezel*nastepny;
- }Wezel;
- typedef Wezel*Lista;
- void Inicjuj(Lista * lista) {
- *lista = NULL;
- }
- bool czyListaPusta(Lista l) {
- if (l == NULL) {
- return true;
- }
- else return false;
- }
- bool czyListaPelna(Lista l) {
- Wezel * wsk;
- bool status;
- wsk = (Wezel *)malloc(sizeof(Wezel));
- if (wsk == NULL) {
- status = true;
- }
- else
- status = false;
- free(wsk);
- return status;
- }
- unsigned int LiczbaPozycji(Lista l) {
- unsigned int licznik = 0;
- while (l != NULL) {
- ++licznik;
- l = l->nastepny;
- }
- printf("%d", licznik);
- return licznik;
- }
- static void KopiujDoWezela(Pozycja pozycja, Wezel * wezel) {
- wezel->pozycja = pozycja;
- }
- bool DodajPozycje(Pozycja pozycja, Lista *lista) {
- Wezel *nowy;
- Wezel *szuk = *lista;
- nowy = (Wezel *)malloc(sizeof(Wezel));
- if (nowy == NULL) {
- return false;
- }
- KopiujDoWezela(pozycja, nowy);
- nowy->nastepny = NULL;
- if (szuk == NULL) {
- *lista = nowy;
- }
- else {
- while (szuk->nastepny != NULL) szuk = szuk->nastepny;
- szuk->nastepny = nowy;
- }
- return true;
- }
- void PrzejdzWykonaj(Lista l, void(*wfun)(Pozycja pozycja)) {
- while (l != NULL) {
- (*wfun)(l->pozycja);
- l = l->nastepny;
- }
- }
- void drukuj(Pozycja pozycja) {
- printf("\n Imie: %s", pozycja.imie);
- printf("\n Nazwisko: %s", pozycja.nazwisko);
- printf("\n Rok Urodzenia: %d", pozycja.rok_urodzenia);
- printf("\n Nazwa Banku: %s", pozycja.nazwa_banku);
- printf("\n Numer Konta: %s", pozycja.numer_konta);
- printf("\n Srodki na koncie: %f", pozycja.srodki);
- }
- void PokazKlientow(Pozycja pozycja) {
- printf("\n Imie: %s", pozycja.imie);
- printf("\n Nazwisko: %s", pozycja.nazwisko);
- printf("\n Rok Urodzenia: %d", pozycja.rok_urodzenia);
- printf("\n Nazwa Banku: %s", pozycja.nazwa_banku);
- printf("\n Numer Konta: %s", pozycja.numer_konta);
- printf("\n Srodki na koncie: %f\n\n\n\n", pozycja.srodki);
- }
- void pierwszaliteraimienia(Pozycja pozycja) {
- if (strncmp(pozycja.imie, wpiszimie, 1) == 0) {
- printf("\n Imie: %s", pozycja.imie);
- printf("\n Nazwisko: %s", pozycja.nazwisko);
- printf("\n Rok Urodzenia: %d", pozycja.rok_urodzenia);
- printf("\n Nazwa Banku: %s", pozycja.nazwa_banku);
- printf("\n Numer Konta: %s", pozycja.numer_konta);
- printf("\n Srodki na koncie: %f\n\n\n\n", pozycja.srodki);
- }
- else {
- printf("Nie ma takiej osoby\n\n\n\n");
- }
- }
- void szukajsrodkow(Pozycja pozycja) {
- if (pozycja.srodki >= 100 && pozycja.srodki <= 100000) {
- printf("\n Imie: %s", pozycja.imie);
- printf("\n Nazwisko: %s", pozycja.nazwisko);
- printf("\n Rok Urodzenia: %d", pozycja.rok_urodzenia);
- printf("\n Nazwa Banku: %s", pozycja.nazwa_banku);
- printf("\n Numer Konta: %s", pozycja.numer_konta);
- printf("\n Srodki na koncie: %f\n\n", pozycja.srodki);
- }
- else {
- printf("Brak osob z kwota tym przedziale\n\n\n\n");
- }
- }
- void sumuj_srodki(Lista l, unsigned int osoby1)
- {
- double suma;
- suma = 0;
- while (l != NULL)
- {
- suma += l->pozycja.srodki;
- l = l->nastepny;
- }
- printf("Suma wszystkich srodkow wynosi %.2f zl\n", suma);
- }
- Pozycja* maks(Lista l)
- {
- if (l != NULL) {
- Pozycja *max = NULL;
- max = &(l->pozycja);
- while (l->nastepny != NULL)
- {
- if ((max->srodki) < ((l->nastepny->pozycja.srodki)))
- max = &(l->nastepny->pozycja);
- l = l->nastepny;
- }
- return(max);
- }
- }
- Pozycja* mini(Lista l)
- {
- if (l != NULL) {
- Pozycja *min = NULL;
- min = &(l->pozycja);
- while (l->nastepny != NULL)
- {
- if ((min->srodki) > ((l->nastepny->pozycja.srodki)))
- min = &(l->nastepny->pozycja);
- l = l->nastepny;
- }
- return(min);
- }
- }
- int main(void) {
- Pozycja* wsk;
- Pozycja* wsk2;
- Pozycja* osoba;
- Lista ksiegozbior;
- Pozycja pierwsza;
- Inicjuj(&ksiegozbior);
- char akcja;
- if (czyListaPelna(ksiegozbior)) {
- exit(1);
- }
- do {
- printf("\t\t~~~~~~~~~~~~~~Welcome~~~~~~~~~~~~~~");
- printf("\n\t\t Jaka akcje chcesz wykonac?");
- printf("\n\t\t Dodaj nowa osobe (A)");
- printf("\n\t\t Lista wszystkich osob(B)");
- printf("\n\t\t Osoby majace srodki w przedziale od 100 do 100000(C)");
- printf("\n\t\t Osoby po pierwszej literze imienia(D)");
- printf("\n\t\t Osoba z najmniejszymi srodkami(E)");
- printf("\n\t\t Osoba z najwiekszymi srodkami(F)");
- printf("\n\t\t Opusc program(G)\n");
- scanf_s(" %c", &akcja);
- rewind(stdin);
- switch (akcja) {
- case 'A':
- puts("\n\t\t\tPodaj imie tej osoby: ");
- while (gets_s(pierwsza.imie, XD) != NULL && pierwsza.imie[0] != '\0') {
- printf("\n\t\t\tPodaj nazwisko tej osoby: \n");
- gets_s(pierwsza.nazwisko);
- printf("\n\t\t\tPodaj rok urodzenia tej osoby: \n");
- scanf_s(" %d", &pierwsza.rok_urodzenia);
- rewind(stdin);
- puts("\n\t\t\tPodaj numer konta: \n");
- gets_s(pierwsza.numer_konta, XD);
- printf("\n\t\t\tPodaj nazwe banku: \n");
- gets_s(pierwsza.nazwa_banku, XD);
- printf("\n\t\t\tPodaj srodki tej osoby: \n");
- scanf_s(" %f", &pierwsza.srodki);
- while (getchar() != '\n') continue;
- if (DodajPozycje(pierwsza, &ksiegozbior) == false) {
- }
- if (czyListaPelna(ksiegozbior)) {
- }
- puts("\n\t\t\t Imie kolejnej osoby(ew. enter)");
- }
- break;
- case 'B':
- if (czyListaPusta(ksiegozbior))
- {
- printf("Brak osob!");
- }
- else
- {
- printf("Lista:");
- PrzejdzWykonaj(ksiegozbior, PokazKlientow);
- }
- break;
- case 'C':
- printf("Osoby ktorych srodki sa w danym przedziale: \n");
- PrzejdzWykonaj(ksiegozbior, szukajsrodkow);
- break;
- case 'D':
- if (czyListaPusta(ksiegozbior)) {
- printf("\n\t\tBrak danych!");
- }
- else {
- printf("Wpisz pierwsza litere imienia: ");
- rewind(stdin);
- scanf_s(" &c", &wpiszimie);
- rewind(stdin);
- PrzejdzWykonaj(ksiegozbior, pierwszaliteraimienia);
- }
- break;
- case 'E':
- wsk2 = mini(ksiegozbior);
- printf("Najmniej srodkow posiada:\n %s\n %s\n %.2f zl\n", wsk2->imie, wsk2->nazwisko, wsk2->srodki);
- break;
- case 'F':
- wsk = maks(ksiegozbior);
- printf("Najwiecej srodkow posiada:\n %s\n %s\n %.2f zl\n", wsk->imie, wsk->nazwisko, wsk->srodki);
- break;
- case'G':
- exit(1);
- break;
- }
- } while (akcja == 'A' || akcja == 'B' || akcja == 'C' || akcja == 'D' || akcja =='E' || akcja == 'F');
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement