Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.64 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5.  
  6. typedef struct auta
  7. {
  8. char kategoria[52];
  9. char SPZ[9];
  10. char znacka[52];
  11. char predajca[102];
  12. int cena;
  13. int rok_vyroby;
  14. char stav_vozidla[202];
  15. struct auta *next;
  16. }AUTA;
  17.  
  18. AUTA *prva(AUTA *first)
  19. {
  20. FILE *fr;
  21. int a = 0;
  22. char c;
  23. AUTA *new_s = NULL, *akt = NULL, *del;
  24.  
  25. if (first != NULL)
  26. {
  27. akt = first;
  28. while (akt != NULL)
  29. {
  30. del = akt;
  31. akt = akt ->next;
  32. free(del);
  33. }
  34.  
  35. }
  36.  
  37. akt = first = NULL;
  38. fr = fopen("auta.txt", "r");
  39. if (fr == NULL)
  40. {
  41. printf("Zaznamy neboli nacitane\n");
  42. }
  43. else
  44. {
  45. while ((c = fgetc(fr)) == '*' )
  46. {
  47. fgetc(fr);
  48. (a)++;
  49. new_s = (AUTA *) malloc(sizeof(AUTA));
  50. fgets(new_s->kategoria,52,fr);
  51. fgets(new_s->SPZ,9,fr);
  52. fgets(new_s->znacka,52,fr);
  53. fgets(new_s->predajca,102,fr);
  54. fscanf(fr,"%d",&new_s->cena);
  55. fscanf(fr,"%d",&new_s->rok_vyroby);
  56. fgetc(fr);
  57. fgets(new_s->stav_vozidla,202,fr);
  58.  
  59. new_s->next = NULL;
  60.  
  61. if (first != NULL)
  62. {
  63. akt->next = new_s;
  64. akt = new_s;
  65. }
  66. else
  67. {
  68. first = akt = new_s;
  69. }
  70. }
  71. }
  72. printf("Nacitalo sa %d zaznamov\n", a);
  73. fclose(fr);
  74. return first;
  75. }
  76.  
  77. AUTA * druha(AUTA *first)
  78. {
  79. int poradie = 0;
  80. AUTA *akt = first;
  81. while (akt != NULL)
  82. {
  83. printf("%d.\n", ++poradie);
  84. printf("kategoria: %s", akt->kategoria);
  85. printf("SPZ: %s", akt->SPZ);
  86. printf("znacka: %s", akt->znacka);
  87. printf("predajca: %s", akt->predajca);
  88. printf("cena: %d\n", akt->cena);
  89. printf("rok_vyroby: %d\n", akt->rok_vyroby);
  90. printf("stav_vozidla: %s", akt->stav_vozidla);
  91. akt=akt->next;
  92. }
  93. printf("\n");
  94. return first;
  95. }
  96.  
  97. AUTA * tretia(AUTA *first)
  98. {
  99. AUTA *akt, *add = NULL, *next = NULL;
  100. int pozicia = 0, poradie = 1;
  101. printf("zadaj poziciu:");
  102. scanf("%d", &pozicia);
  103. // printf("%d", pozicia);
  104. add = (AUTA *) malloc(sizeof(AUTA));
  105. getchar();
  106. printf("zadaj kategoriu:");
  107. gets(add->kategoria);
  108. strcat(add->kategoria,"\n");
  109. // printf("%s",add->kategoria);
  110. printf("zadaj SPZ:");
  111. gets(add->SPZ);
  112. strcat(add->SPZ,"\n");
  113. // printf("%s",add->SPZ);
  114. printf("zadaj znacku:");
  115. gets(add->znacka);
  116. strcat(add->znacka,"\n");
  117. // printf("%s",add->znacka);
  118. printf("zadaj predajcu:");
  119. gets(add->predajca);
  120. strcat(add->predajca,"\n");
  121. // printf("%s\n",add->predajca);
  122. printf("zadaj cenu:");
  123. scanf("%d",&add->cena);
  124. // printf("%d\n",add->cena);
  125. printf("zadaj rok vyroby:");
  126. scanf("%d",&add->rok_vyroby);
  127. // printf("%d\n",add->rok_vyroby);
  128. printf("zadaj stav vozidla:");
  129. scanf("%s",&add->stav_vozidla);
  130. strcat(add->stav_vozidla,"\n");
  131. // printf("%s",add->stav_vozidla);
  132. add->next = NULL;
  133. // printf("HAHAHAHAHAHAH\n");
  134. akt = first;
  135. while (akt != NULL)
  136. {
  137. poradie++;
  138. //printf("%d\n",poradie);
  139. //printf("%d\n",pozicia);
  140. if (pozicia == 1)
  141. {
  142. //printf("na prve miesto");
  143. add->next = first;
  144. first = add;
  145. return first;
  146. }
  147. if (poradie == pozicia)
  148. {
  149. //printf("if");
  150. if (akt->next != NULL)
  151. {
  152. //printf("not NULL");
  153. add->next = akt->next;
  154. akt->next = add;
  155. return first;
  156. }
  157. else
  158. {
  159. //printf("NULL else");
  160. akt->next = add;
  161. return first;
  162. }
  163. }
  164. else
  165. {
  166. //printf("else");
  167. akt = akt->next;
  168. }
  169. }
  170.  
  171. akt = first;
  172.  
  173. while (akt != NULL)
  174. {
  175. //printf("%d\n", akt->cena);
  176. //printf("%d\n", akt->next);
  177. if (akt->next == NULL)
  178. {
  179. akt->next = add;
  180. return first;
  181. }
  182. akt = akt->next;
  183. }
  184. }
  185.  
  186. AUTA * stvrta(AUTA *first)
  187. {
  188. AUTA *akt, *pred;
  189. char kategoria[52], kategoria_V[52], kategoria_V_f[52], kategoria_V_a[52];
  190. int poradie = 0, i, j, k;
  191. scanf("%s", kategoria);
  192. strlen(kategoria);
  193. strlen(akt->kategoria);
  194. strlen(first->kategoria);
  195. printf("%d\n", strlen(kategoria));
  196. printf("%d\n", strlen(akt->kategoria));
  197. printf("%d\n", strlen(first->kategoria));
  198.  
  199. for (i = 0; i <= strlen(kategoria);i++)
  200. {
  201. kategoria_V[i] = toupper(kategoria[i]);
  202. }
  203. printf("%s\n", kategoria_V);
  204.  
  205. for (j = 0; j <= strlen(first->kategoria);j++)
  206. {
  207. kategoria_V_f[j] = toupper(first->kategoria[j]);
  208. }
  209. printf("%s\n", kategoria_V_f);
  210.  
  211. if (strstr(kategoria_V_f,kategoria_V) != NULL)
  212. {
  213. first->next=akt->next;
  214. akt = first;
  215. first = pred;
  216. free(akt);
  217. return first;
  218. }
  219.  
  220. akt = first->next;
  221. pred = first;
  222.  
  223. while(akt != NULL)
  224. {
  225. for (k = 0; k <= strlen(akt->kategoria);k++)
  226. {
  227. kategoria_V_a[k] = toupper(akt->kategoria[k]);
  228. }
  229. printf("%s\n", kategoria_V_a);
  230.  
  231. if (strstr(kategoria_V_a,kategoria_V) != NULL)
  232. {
  233. poradie++;
  234. pred->next = akt->next;
  235. free(akt);
  236. return first;
  237. }
  238. akt = akt->next;
  239. pred = pred->next;
  240. }
  241. return first;
  242. }
  243.  
  244. AUTA * piata(AUTA *first)
  245. {
  246. AUTA *akt = first;
  247. char spz[9];
  248. int cena = 0, poradie = 0;
  249. scanf("%d", &cena);
  250. // printf("%d\n", cena);
  251. scanf("%s", &spz);
  252. // printf ("%s\n", spz);
  253.  
  254. while (akt != NULL)
  255. {
  256. //printf ("\n%s\n", akt->SPZ);
  257. //printf("%d\n", akt->cena);
  258. if (((akt->cena) <= cena) && ((akt->SPZ[0]) == spz[0]) && ((akt->SPZ[1]) == spz[1]))
  259. {
  260. printf("%d.\n", ++poradie);
  261. printf("kategoria: %s", akt->kategoria);
  262. printf("SPZ: %s", akt->SPZ);
  263. printf("znacka: %s", akt->znacka);
  264. printf("predajca: %s", akt->predajca);
  265. printf("cena: %d\n", akt->cena);
  266. printf("rok_vyroby: %d\n", akt->rok_vyroby);
  267. printf("stav_vozidla: %s", akt->stav_vozidla);
  268. }
  269. akt = akt->next;
  270. }
  271.  
  272. return first;
  273. }
  274.  
  275. AUTA * siesta(AUTA *first)
  276. {
  277. AUTA *akt, *novy, *pred;
  278. char SPZ[9];
  279.  
  280. printf("zadaj SPZ: ");
  281. scanf("%s",&SPZ);
  282. printf("%s\n",SPZ);
  283. printf("\n");
  284. //getchar();
  285. novy = (AUTA *) malloc(sizeof(AUTA));
  286. /*scanf("%s\n",&novy->kategoria);
  287. scanf("%s\n",&novy->SPZ);
  288. scanf("%s\n",&novy->znacka);
  289. scanf("%s\n",&novy->predajca);
  290. scanf("%d\n",&novy->cena);
  291. scanf("%d\n",&novy->rok_vyroby);
  292. scanf("%s",&novy->stav_vozidla);
  293. novy->next = NULL;*/
  294.  
  295. getchar();
  296. gets(novy->kategoria);
  297. strcat(novy->kategoria,"\n");
  298. gets(novy->SPZ);
  299. strcat(novy->SPZ,"\n");
  300. gets(novy->znacka);
  301. strcat(novy->znacka,"\n");
  302. gets(novy->predajca);
  303. strcat(novy->predajca,"\n");
  304. scanf("%d",&novy->cena);
  305. scanf("%d",&novy->rok_vyroby);
  306. scanf("%s",&novy->stav_vozidla);
  307. strcat(novy->stav_vozidla,"\n");
  308. novy->next = NULL;
  309.  
  310. /*printf("kategoria: %s\n", novy->kategoria);
  311. printf("SPZ: %s\n", novy->SPZ);
  312. printf("znacka: %s\n", novy->znacka);
  313. printf("predajca: %s\n", novy->predajca);
  314. printf("cena: %d\n", novy->cena);
  315. printf("rok_vyroby: %d\n", novy->rok_vyroby);
  316. printf("stav_vozidla: %s\n", novy->stav_vozidla);*/
  317.  
  318. if (strstr(first->SPZ,SPZ) != NULL)
  319. {
  320. novy->next=first->next;
  321. akt = first;
  322. first = novy;
  323. free(akt);
  324. printf("Zoznam sa aktualizoval\n");
  325. return first;
  326. }
  327.  
  328. akt = first->next;
  329. pred = first;
  330. while(akt != NULL)
  331. {
  332. if (strstr(akt->SPZ,SPZ) != NULL)
  333. {
  334. printf("%s\n",akt->SPZ);
  335. printf("%d\n",akt->cena);
  336. pred->next = novy;
  337. novy->next = akt->next;
  338. free(akt);
  339. printf("Zoznam sa aktualizoval\n");
  340. return first;
  341. }
  342. akt = akt->next;
  343. pred = pred->next;
  344. }
  345. printf("Zoznam sa neaktualizoval");
  346. return first;
  347. }
  348.  
  349.  
  350. int main()
  351. {
  352. char c;
  353. AUTA *FIRST = NULL;
  354. int opakovat = 1;
  355. do
  356. {
  357. switch(c = getchar())
  358. {
  359. case 'c' : FIRST = prva(FIRST); break;
  360. case 'v' : FIRST = druha(FIRST); break;
  361. case 'p' : FIRST = tretia(FIRST); break;
  362. case 'z' : FIRST = stvrta(FIRST); break;
  363. case 'h' : FIRST = piata(FIRST); break;
  364. case 'a' : FIRST = siesta(FIRST); break;
  365. case 'k' : opakovat = 0; break;
  366. }
  367. } while (opakovat);
  368.  
  369. return 0;
  370. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement