Guest User

Untitled

a guest
Jul 19th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4. #include <stdlib.h>
  5.  
  6. struct firmat
  7. {
  8. char nazwa_firmy[40];
  9. char nazwai[40];
  10. char predkosc[40];
  11. int liczba;
  12. char firma[40];
  13.  
  14. };
  15.  
  16.  
  17.  
  18. struct lista
  19. {
  20. firmat dane;
  21. lista *next;
  22. };
  23.  
  24. struct firma
  25. {
  26.  
  27. char nazwa[40];
  28. int liczba;
  29. int free;
  30. lista *wsk;
  31. lista *ost;
  32.  
  33. };
  34.  
  35.  
  36.  
  37.  
  38. firmat wczytaj_dane()
  39. {
  40. firmat D;
  41. printf ("Nazwa firmy:");
  42. scanf ("%s", D.nazwa_firmy);
  43. printf ("Nazwa internetu:");
  44. scanf ("%s", D.nazwai);
  45. printf ("Predkosc:");
  46. scanf ("%s", D.predkosc);
  47. printf ("Liczba:");
  48. scanf ("%d", &D.liczba);
  49. printf ("Liczba osob w firme:");
  50. scanf ("%s", D.firma);
  51. return D;
  52. }
  53.  
  54.  
  55.  
  56. void dodaj_firme(firma *T,firmat D)
  57. {
  58.  
  59. for (int i=0;i<100;i++) if(strcmp(T[i].nazwa,D.firma)==0) {
  60.  
  61. lista *pomoc;
  62.  
  63. pomoc=(lista *)malloc(sizeof(lista));
  64.  
  65. pomoc->dane=D;
  66. pomoc->next=NULL;
  67. if(T[i].wsk==NULL)
  68. T[i].wsk=pomoc;
  69. else(T[i].ost)->next=pomoc;
  70. T[i].ost=pomoc;
  71. T[i].liczba=T[i].liczba+D.liczba;
  72.  
  73.  
  74. }
  75.  
  76. }
  77.  
  78.  
  79. int menu()
  80. {
  81. int nr;
  82. printf("\n1- Nowe dane o ofercie internetu\n");
  83. printf("2- Nowa firma telekomunikacyjna\n");
  84. printf("3- Szukaj firme telekomunikacyjna\n");
  85. printf("4- Wyswietl liczbe sprzedanych ofert\n");
  86. printf("5- Usun firme telekomunikacyjna\n");
  87. printf("6- Usun nazwe internetu\n");
  88. printf("9- koniec\n");
  89. scanf("%d",&nr);
  90. return nr;
  91. }
  92.  
  93.  
  94.  
  95.  
  96. short dodaj_firme(firma *T,char *naz, int *licz)
  97. {
  98. int ok;
  99. for (int i=0;i<*licz+1;i++)
  100. if (T[i].free==0 )
  101.  
  102. {
  103. strcpy(T[i].nazwa,naz);
  104. T[i].liczba=0;
  105. T[i].free=1;
  106. T[i].wsk=NULL;
  107. ok=i;
  108. *licz=*licz+1;
  109. break;
  110. }
  111.  
  112. return ok;
  113.  
  114. }
  115.  
  116.  
  117.  
  118. int znalazl(firma *T, char *naz, int *licz)
  119. {
  120.  
  121. int jest=0;
  122. for (int i=0;i<*licz+1;i++) if(strcmp(T[i].nazwa,naz)==0) jest=1;
  123. return jest;
  124. }
  125.  
  126. void info(firmat D)
  127. {
  128. 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);
  129. }
  130.  
  131.  
  132. int szukaj(firma *T,char *naz,int *licz)
  133. {
  134. lista *pomoc;
  135. int byla=0;
  136. for (int i=0;i<*licz+1;i++)
  137.  
  138. {
  139. pomoc=T[i].wsk;
  140. while (pomoc!=NULL)
  141. {
  142. if (strcmp(pomoc->dane.nazwa_firmy,naz)==0)
  143. {
  144. info(pomoc->dane);
  145. byla=1;
  146. return byla;
  147. }
  148. pomoc=pomoc->next;
  149. } }
  150. if (byla==0) printf("podana firma nie istnieje!!");
  151. return byla;
  152. }
  153.  
  154.  
  155. short usun(firma *T,char *naz,int *licz)
  156. {
  157. short jest=0;
  158. lista *pomoc,*poprzedni;
  159. for (int i=0;i<*licz+1;i++) {
  160. pomoc=T[i].wsk;
  161. poprzedni=NULL;
  162. while(pomoc!=NULL)
  163. {
  164. if(strcmp(pomoc->dane.nazwa_firmy,naz)==0)
  165. {
  166. jest=1;
  167. if(pomoc==T[i].wsk)
  168. {
  169. T[i].wsk=pomoc->next;
  170. free(pomoc);
  171. pomoc=T[i].wsk;
  172. }
  173. else
  174. {
  175. poprzedni->next=pomoc->next;
  176. free(pomoc);
  177. pomoc=poprzedni->next;
  178. }
  179. break;
  180. }
  181. else
  182. {
  183. poprzedni=pomoc;
  184. pomoc=pomoc->next;
  185. }
  186. } }
  187. return jest;
  188. }
  189.  
  190. void usun_liste(firma *T, int i)
  191. {
  192. lista *pomoc=T[i].wsk;
  193. while (pomoc!=NULL)
  194. {
  195. T[i].wsk=pomoc->next;
  196. free(pomoc);
  197. pomoc=T[i].wsk;
  198. }
  199. }
  200.  
  201. #define n 100
  202.  
  203. main ()
  204. {
  205. firma T[n];
  206. int ile=0;
  207. char naz[40], sciezka[50];
  208. int jest, nr, licz=0;
  209. lista *ost;
  210. lista *wsk;
  211. wsk=NULL;
  212. ost=NULL;
  213. firmat D;
  214.  
  215. for (int i=0;i<n;i++) T[i].free=0;
  216.  
  217.  
  218.  
  219.  
  220.  
  221. do
  222. {
  223. nr=menu();
  224. switch(nr)
  225. {
  226. case 1: for (int i=0;i<licz+1;i++) if (T[i].free==1) jest=1;
  227. if (jest==0)
  228. {
  229. printf ("Stworz firme!!");
  230. break;
  231. }
  232. D=wczytaj_dane();
  233. if (znalazl(T,D.firma, & licz)==0)
  234. {
  235.  
  236. break;
  237. }
  238.  
  239.  
  240. dodaj_firme(T,D);
  241. break;
  242.  
  243.  
  244.  
  245.  
  246. case 2: system("CLS");
  247. printf("\nNazwa firmy:");
  248. scanf("%s",naz);
  249.  
  250. if ( znalazl(T,naz,&licz)==1) printf ("Taka firma juz istnieje w bazie!\n"); else {
  251.  
  252. printf ("%d", dodaj_firme(T,naz,&licz)); }
  253. break;
  254.  
  255. case 3:
  256.  
  257. printf("\nNazwa firmy:");
  258. scanf("%s",naz);
  259. szukaj (T,naz, &licz);
  260.  
  261. break;
  262.  
  263.  
  264.  
  265. case 4:
  266.  
  267.  
  268.  
  269. printf("\nNazwa firmy:");
  270. scanf("%s",naz);
  271. if ( znalazl(T,naz, &licz)==0) { printf ("Taka firma nie istnieje\n"); break; }
  272. for (int i=0;i<licz+1;i++) if(strcmp(T[i].nazwa,naz)==0) jest=i;
  273. printf("Liczba sprzedanych ofert to %d", T[jest].liczba);
  274.  
  275. break;
  276. case 5:
  277. printf ("Podaj nazwe firmy do usuniecia: ");
  278. scanf("%s", naz);
  279. jest=usun(T,naz, &licz);
  280. if (!jest) printf ("Brak firmy.");
  281. break;
  282. break;
  283.  
  284. case 6:
  285. printf ("Podaj nazwe firmy do usuniecia: ");
  286. scanf("%s", naz);
  287. for (int i=0;i<licz+1;i++) if(strcmp(T[i].nazwa,naz)==0)
  288.  
  289. {
  290. usun_liste(T,i);
  291. T[i].free=0;
  292. printf ("Firma zostala usunieta\n");
  293. break;
  294. }
  295.  
  296.  
  297. break;
  298.  
  299.  
  300. }
  301. }
  302.  
  303. while(nr!=9);
  304.  
  305.  
  306.  
  307.  
  308.  
  309. return 0;
  310. }
Add Comment
Please, Sign In to add comment