Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- #include <string.h>
- #include <stdlib.h>
- struct firmat
- {
- char nazwa_firmy[40];
- char nazwai[40];
- char predkosc[40];
- int liczba;
- char firma[40];
- };
- struct lista
- {
- firmat dane;
- lista *next;
- };
- struct firma
- {
- char nazwa[40];
- int liczba;
- int free;
- lista *wsk;
- lista *ost;
- };
- firmat wczytaj_dane()
- {
- firmat D;
- printf ("Nazwa firmy:");
- scanf ("%s", D.nazwa_firmy);
- printf ("Nazwa internetu:");
- scanf ("%s", D.nazwai);
- printf ("Predkosc:");
- scanf ("%s", D.predkosc);
- printf ("Liczba:");
- scanf ("%d", &D.liczba);
- printf ("Liczba osob w firme:");
- scanf ("%s", D.firma);
- return D;
- }
- void dodaj_firme(firma *T,firmat D)
- {
- for (int i=0;i<100;i++) if(strcmp(T[i].nazwa,D.firma)==0) {
- lista *pomoc;
- pomoc=(lista *)malloc(sizeof(lista));
- pomoc->dane=D;
- pomoc->next=NULL;
- if(T[i].wsk==NULL)
- T[i].wsk=pomoc;
- else(T[i].ost)->next=pomoc;
- T[i].ost=pomoc;
- T[i].liczba=T[i].liczba+D.liczba;
- }
- }
- int menu()
- {
- int nr;
- printf("\n1- Nowe dane o ofercie internetu\n");
- printf("2- Nowa firma telekomunikacyjna\n");
- printf("3- Szukaj firme telekomunikacyjna\n");
- printf("4- Wyswietl liczbe sprzedanych ofert\n");
- printf("5- Usun firme telekomunikacyjna\n");
- printf("6- Usun nazwe internetu\n");
- printf("9- koniec\n");
- scanf("%d",&nr);
- return nr;
- }
- short dodaj_firme(firma *T,char *naz, int *licz)
- {
- int ok;
- for (int i=0;i<*licz+1;i++)
- if (T[i].free==0 )
- {
- strcpy(T[i].nazwa,naz);
- T[i].liczba=0;
- T[i].free=1;
- T[i].wsk=NULL;
- ok=i;
- *licz=*licz+1;
- break;
- }
- return ok;
- }
- int znalazl(firma *T, char *naz, int *licz)
- {
- int jest=0;
- for (int i=0;i<*licz+1;i++) if(strcmp(T[i].nazwa,naz)==0) jest=1;
- return jest;
- }
- void info(firmat D)
- {
- printf("Nazwa firmy telekomunikacyjnej: %s\n Nazwa internetu: %s\n Predkosc: %s\n Liczba sprzedanych ofert: %d\n Firma: %s\n\n",D.nazwa_firmy,D.nazwai,D.predkosc,D.liczba,D.firma);
- }
- int szukaj(firma *T,char *naz,int *licz)
- {
- lista *pomoc;
- int byla=0;
- for (int i=0;i<*licz+1;i++)
- {
- pomoc=T[i].wsk;
- while (pomoc!=NULL)
- {
- if (strcmp(pomoc->dane.nazwa_firmy,naz)==0)
- {
- info(pomoc->dane);
- byla=1;
- return byla;
- }
- pomoc=pomoc->next;
- } }
- if (byla==0) printf("podana firma nie istnieje!!");
- return byla;
- }
- short usun(firma *T,char *naz,int *licz)
- {
- short jest=0;
- lista *pomoc,*poprzedni;
- for (int i=0;i<*licz+1;i++) {
- pomoc=T[i].wsk;
- poprzedni=NULL;
- while(pomoc!=NULL)
- {
- if(strcmp(pomoc->dane.nazwa_firmy,naz)==0)
- {
- jest=1;
- if(pomoc==T[i].wsk)
- {
- T[i].wsk=pomoc->next;
- free(pomoc);
- pomoc=T[i].wsk;
- }
- else
- {
- poprzedni->next=pomoc->next;
- free(pomoc);
- pomoc=poprzedni->next;
- }
- break;
- }
- else
- {
- poprzedni=pomoc;
- pomoc=pomoc->next;
- }
- } }
- return jest;
- }
- void usun_liste(firma *T, int i)
- {
- lista *pomoc=T[i].wsk;
- while (pomoc!=NULL)
- {
- T[i].wsk=pomoc->next;
- free(pomoc);
- pomoc=T[i].wsk;
- }
- }
- #define n 100
- main ()
- {
- firma T[n];
- int ile=0;
- char naz[40], sciezka[50];
- int jest, nr, licz=0;
- lista *ost;
- lista *wsk;
- wsk=NULL;
- ost=NULL;
- firmat D;
- for (int i=0;i<n;i++) T[i].free=0;
- do
- {
- nr=menu();
- switch(nr)
- {
- case 1: for (int i=0;i<licz+1;i++) if (T[i].free==1) jest=1;
- if (jest==0)
- {
- printf ("Stworz firme!!");
- break;
- }
- D=wczytaj_dane();
- if (znalazl(T,D.firma, & licz)==0)
- {
- break;
- }
- dodaj_firme(T,D);
- break;
- case 2: system("CLS");
- printf("\nNazwa firmy:");
- scanf("%s",naz);
- if ( znalazl(T,naz,&licz)==1) printf ("Taka firma juz istnieje w bazie!\n"); else {
- printf ("%d", dodaj_firme(T,naz,&licz)); }
- break;
- case 3:
- printf("\nNazwa firmy:");
- scanf("%s",naz);
- szukaj (T,naz, &licz);
- break;
- case 4:
- printf("\nNazwa firmy:");
- scanf("%s",naz);
- if ( znalazl(T,naz, &licz)==0) { printf ("Taka firma nie istnieje\n"); break; }
- for (int i=0;i<licz+1;i++) if(strcmp(T[i].nazwa,naz)==0) jest=i;
- printf("Liczba sprzedanych ofert to %d", T[jest].liczba);
- break;
- case 5:
- printf ("Podaj nazwe firmy do usuniecia: ");
- scanf("%s", naz);
- jest=usun(T,naz, &licz);
- if (!jest) printf ("Brak firmy.");
- break;
- break;
- case 6:
- printf ("Podaj nazwe firmy do usuniecia: ");
- scanf("%s", naz);
- for (int i=0;i<licz+1;i++) if(strcmp(T[i].nazwa,naz)==0)
- {
- usun_liste(T,i);
- T[i].free=0;
- printf ("Firma zostala usunieta\n");
- break;
- }
- break;
- }
- }
- while(nr!=9);
- return 0;
- }
Add Comment
Please, Sign In to add comment