Advertisement
Guest User

Untitled

a guest
Jan 21st, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.52 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #include <string.h>
  4.  
  5. #include <stdlib.h>
  6.  
  7.  
  8.  
  9. typedef struct{
  10.  
  11. char imie[15];
  12.  
  13. char nazwisko[20];
  14.  
  15. int wiek;
  16.  
  17. double zarobki;
  18.  
  19. }OSOBA;
  20.  
  21.  
  22.  
  23. void printOut(OSOBA osoba[], int i){
  24.  
  25. int k;
  26.  
  27. // char a[68]="____________________________________________________________________";
  28.  
  29. // printf("\n%s", a);
  30.  
  31. printf("\n|%-3s|%-15s|%20s|%15s|%15s|", "lp", "Imie", "Nazwisko", "wiek", "zarobki" );
  32.  
  33. for(k=0; k < i; k++){
  34.  
  35. printf("\n|%-3d|%-15s|%20s|%15d|%15lf|", k+1, osoba[k].imie, osoba[k].nazwisko, osoba[k].wiek, osoba[k].zarobki);
  36. }
  37. printf("\n");
  38.  
  39. // printf("%s\n", a);
  40.  
  41. }
  42.  
  43.  
  44.  
  45. void appendToData(OSOBA *osoba, int *i){
  46.  
  47. char name[15], secondname[20];
  48.  
  49. int age;
  50.  
  51. double income;
  52.  
  53. scanf("%s %s %d %lf", name, secondname, &age, &income);
  54.  
  55. strcpy(osoba[*i].imie, name);
  56.  
  57. strcpy(osoba[*i].nazwisko, secondname);
  58.  
  59. osoba[*i].wiek = age;
  60.  
  61. osoba[*i].zarobki = income;
  62. ++(*i);
  63. }
  64.  
  65.  
  66.  
  67. void deleteSelected(OSOBA *osoba, int i){
  68.  
  69. int j;
  70.  
  71. scanf("%d", &j);
  72.  
  73. int k = j-1;
  74.  
  75. for(k; k < i; k++){
  76.  
  77. strcpy(osoba[k].imie, osoba[k+1].imie);
  78.  
  79. strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
  80.  
  81. osoba[k].wiek = osoba[k+1].wiek;
  82.  
  83. osoba[k].zarobki = osoba[k+1].zarobki;
  84.  
  85. }
  86.  
  87. }
  88.  
  89.  
  90.  
  91. void saveToFile(OSOBA *osoba, int i){
  92.  
  93. FILE *fout=fopen("plik_docelowy.txt", "w");
  94.  
  95. if(fout){
  96.  
  97. int j=0;
  98.  
  99. while(j!=i){
  100.  
  101. fprintf(fout, "%s %s %d %g\n", osoba[j].imie, osoba[j].nazwisko, osoba[j].wiek, osoba[j].zarobki);
  102. j++;
  103.  
  104. }
  105.  
  106. }
  107.  
  108. else printf("\nerror\n");
  109. fclose(fout);
  110. exit(0);
  111.  
  112. }
  113.  
  114.  
  115.  
  116. void sortowanieNizw(OSOBA *osoba, int i){
  117.  
  118. int j, k;
  119.  
  120. char swap[20];
  121.  
  122. int temp;
  123.  
  124. double d_temp;
  125.  
  126. for(j = i-1; j >= 0; j--){
  127.  
  128. for(k = 0; k < j; k++){
  129.  
  130. if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) < 0){
  131.  
  132. strcpy(swap, osoba[k].nazwisko);
  133.  
  134. strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
  135.  
  136. strcpy(osoba[k+1].nazwisko, swap);
  137.  
  138. }
  139.  
  140. else if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) == 0){
  141.  
  142. if(strcmp(osoba[k+1].imie, osoba[k].imie) < 0){
  143.  
  144. strcpy(swap, osoba[k].imie);
  145.  
  146. strcpy(osoba[k].imie, osoba[k+1].imie);
  147.  
  148. strcpy(osoba[k+1].imie, swap);
  149.  
  150. }
  151.  
  152. else if(strcmp(osoba[k+1].imie, osoba[k].imie) == 0){
  153.  
  154. if(osoba[k+1].zarobki < osoba[k].zarobki){
  155.  
  156. d_temp = osoba[k].zarobki;
  157.  
  158. osoba[k].zarobki = osoba[k+1].zarobki;
  159.  
  160. osoba[k+1].zarobki = d_temp;
  161.  
  162. }
  163.  
  164. else if(osoba[k+1].zarobki == osoba[k].zarobki){
  165.  
  166. if(osoba[k+1].wiek < osoba[k].wiek){
  167.  
  168. temp = osoba[k].wiek;
  169.  
  170. osoba[k].wiek = osoba[k+1].wiek;
  171.  
  172. osoba[k+1].wiek = temp;
  173.  
  174. }
  175.  
  176. }
  177.  
  178. }
  179.  
  180. }
  181.  
  182. }
  183.  
  184. }
  185.  
  186. }
  187.  
  188.  
  189.  
  190. void sortowanieInwz(OSOBA *osoba, int i){
  191.  
  192. int j, k;
  193.  
  194. char swap[20];
  195.  
  196. int temp;
  197.  
  198. double d_temp;
  199.  
  200. for(j = i-1; j >= 0; j--){
  201.  
  202. for(k = 0; k < j; k++){
  203.  
  204. if(strcmp(osoba[k+1].imie, osoba[k].imie) < 0){
  205.  
  206. strcpy(swap, osoba[k].imie);
  207.  
  208. strcpy(osoba[k].imie, osoba[k+1].imie);
  209.  
  210. strcpy(osoba[k+1].imie, swap);
  211.  
  212. }
  213.  
  214. else if(strcmp(osoba[k+1].imie, osoba[k].imie) == 0){
  215.  
  216. if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) < 0){
  217.  
  218. strcpy(swap, osoba[k].nazwisko);
  219.  
  220. strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
  221.  
  222. strcpy(osoba[k+1].nazwisko, swap);
  223.  
  224. }
  225.  
  226. else if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) == 0){
  227.  
  228. if(osoba[k+1].wiek < osoba[k].wiek){
  229.  
  230. temp = osoba[k].wiek;
  231.  
  232. osoba[k].wiek = osoba[k+1].wiek;
  233.  
  234. osoba[k+1].wiek = temp;
  235.  
  236. }
  237.  
  238. else if(osoba[k+1].wiek == osoba[k].wiek){
  239.  
  240. if(osoba[k+1].zarobki < osoba[k].zarobki){
  241.  
  242. d_temp = osoba[k].zarobki;
  243.  
  244. osoba[k].zarobki = osoba[k+1].zarobki;
  245.  
  246. osoba[k+1].zarobki = d_temp;
  247.  
  248. }
  249.  
  250. }
  251.  
  252. }
  253.  
  254. }
  255.  
  256. }
  257.  
  258. }
  259.  
  260. }
  261.  
  262.  
  263.  
  264. void sortowanieWniz(OSOBA *osoba, int i){
  265.  
  266. int j, k;
  267.  
  268. char swap[20];
  269.  
  270. int temp;
  271.  
  272. double d_temp;
  273.  
  274. for(j = i-1; j >= 0; j--){
  275.  
  276. for(k = 0; k < j; k++){
  277.  
  278. if(osoba[k+1].wiek < osoba[k].wiek){
  279.  
  280. temp = osoba[k].wiek;
  281.  
  282. osoba[k].wiek = osoba[k+1].wiek;
  283.  
  284. osoba[k+1].wiek = temp;
  285.  
  286. }
  287.  
  288. else if(osoba[k+1].wiek == osoba[k].wiek){
  289.  
  290. if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) < 0){
  291.  
  292. strcpy(swap, osoba[k].nazwisko);
  293.  
  294. strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
  295.  
  296. strcpy(osoba[k+1].nazwisko, swap);
  297.  
  298. }
  299.  
  300. else if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) == 0){
  301.  
  302. if(strcmp(osoba[k+1].imie, osoba[k].imie) < 0){
  303.  
  304. strcpy(swap, osoba[k].imie);
  305.  
  306. strcpy(osoba[k].imie, osoba[k+1].imie);
  307.  
  308. strcpy(osoba[k+1].imie, swap);
  309.  
  310. }
  311.  
  312. else if(strcmp(osoba[k+1].imie, osoba[k].imie) == 0){
  313.  
  314. if(osoba[k+1].zarobki < osoba[k].zarobki){
  315.  
  316. d_temp = osoba[k].zarobki;
  317.  
  318. osoba[k].zarobki = osoba[k+1].zarobki;
  319.  
  320. osoba[k+1].zarobki = d_temp;
  321.  
  322. }
  323.  
  324. }
  325.  
  326. }
  327.  
  328. }
  329.  
  330. }
  331.  
  332. }
  333.  
  334. }
  335.  
  336.  
  337.  
  338. void sortowanieZniw(OSOBA *osoba, int i){
  339.  
  340. int j, k;
  341.  
  342. char swap[20];
  343.  
  344. int temp;
  345.  
  346. double d_temp;
  347.  
  348. for(j = i-1; j >= 0; j--){
  349.  
  350. for(k = 0; k < j; k++){
  351.  
  352. if(osoba[k+1].zarobki < osoba[k].zarobki){
  353.  
  354. d_temp = osoba[k].zarobki;
  355.  
  356. osoba[k].zarobki = osoba[k+1].zarobki;
  357.  
  358. osoba[k+1].zarobki = d_temp;
  359.  
  360. }
  361.  
  362. else if(osoba[k+1].zarobki == osoba[k].zarobki){
  363.  
  364. if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) < 0){
  365.  
  366. strcpy(swap, osoba[k].nazwisko);
  367.  
  368. strcpy(osoba[k].nazwisko, osoba[k+1].nazwisko);
  369.  
  370. strcpy(osoba[k+1].nazwisko, swap);
  371.  
  372. }
  373.  
  374. else if(strcmp(osoba[k+1].nazwisko, osoba[k].nazwisko) == 0){
  375.  
  376. if(strcmp(osoba[k+1].imie, osoba[k].imie) < 0){
  377.  
  378. strcpy(swap, osoba[k].imie);
  379.  
  380. strcpy(osoba[k].imie, osoba[k+1].imie);
  381.  
  382. strcpy(osoba[k+1].imie, swap);
  383.  
  384. }
  385.  
  386. else if(strcmp(osoba[k+1].imie, osoba[k].imie) == 0){
  387.  
  388. if(osoba[k+1].wiek < osoba[k].wiek){
  389.  
  390. temp = osoba[k].wiek;
  391.  
  392. osoba[k].wiek = osoba[k+1].wiek;
  393.  
  394. osoba[k+1].wiek = temp;
  395.  
  396. }
  397.  
  398. }
  399.  
  400. }
  401.  
  402. }
  403.  
  404. }
  405.  
  406. }
  407.  
  408. }
  409.  
  410.  
  411.  
  412. int main(int argc, char *argv[]){
  413.  
  414. OSOBA osoba[50];
  415.  
  416. FILE *fin=fopen(argv[1],"r");
  417. int i = 0;
  418.  
  419. if(!fin){
  420.  
  421. printf("Error opening file..\n");
  422.  
  423. exit(0);
  424.  
  425. }
  426.  
  427. else{
  428.  
  429. printf("\nCollecting data..\n");
  430.  
  431. while(fscanf(fin, "%s %s %d %lf", osoba[i].imie, osoba[i].nazwisko, &osoba[i].wiek, &osoba[i].zarobki)==4){
  432.  
  433. i++;
  434.  
  435. }
  436.  
  437. printf("\nData collected!\n");
  438.  
  439. fclose(fin);
  440.  
  441. }
  442. int liczba;
  443. do{
  444. printf("Wybierz co chcesz zrobic, wpisujac cyfre/cyfre oraz litere, znajduja sie one przed danym wyborem.\n"
  445.  
  446. "1. Wypisz dane w postaci tabelki.\n"
  447.  
  448. "2. Sortuj dane wedlug:\n"
  449.  
  450. "a) nazwisko-imie-wiek-zarobki,\n"
  451.  
  452. "b) imie-nazwisko-wiek-zarobki,\n"
  453.  
  454. "c) wiek-nazwisko-imie-zarobki,\n"
  455.  
  456. "d) zarobki-nazwisko-imie-wiek.\n"
  457.  
  458. "3. Dodaj osobe do bazy.\n"
  459.  
  460. "4. Usun osobe z bazy.\n"
  461.  
  462. "5. Zapisz dane do pliku.\n"
  463.  
  464. "6. Koniec programu.\n");
  465. scanf("%d", &liczba);
  466.  
  467. switch(liczba){
  468.  
  469. case 1: // printuj dane
  470.  
  471. printOut(osoba, i);
  472.  
  473. break;
  474.  
  475. case 2: // o ktore sortowanie chodzi?
  476.  
  477. printf("Ktory sposob posortowanie preferujesz?\n");
  478. char litera;
  479.  
  480. scanf("%c", &litera);
  481. if(litera == 'a') sortowanieNizw(osoba, i);
  482. if(litera == 'b') sortowanieInwz(osoba, i);
  483. if(litera == 'c') sortowanieWniz(osoba, i);
  484. if(litera == 'd') sortowanieZniw(osoba, i);
  485.  
  486. break;
  487.  
  488. case 3: // dodaj do bazy
  489.  
  490. printf("\nZdecydowales sie dodac osobe do bazy danych. Wpisz kolejno jej atrybuty.\n");
  491.  
  492. appendToData(osoba, &i);
  493.  
  494. break;
  495.  
  496. case 4: // usun z bazy
  497.  
  498. printf("\nZdecydowales sie usunac osobe z bazy. Ktora z kolei osob chcesz wykasowac z bazy?\n");
  499.  
  500. deleteSelected(osoba, i);
  501.  
  502. break;
  503.  
  504. case 5: // zapis do pliku
  505.  
  506. printf("\nWybrales zapis do pliku \"plik_docelowy.txt\"\n");
  507.  
  508. saveToFile(osoba, i);
  509.  
  510. break;
  511. case 6:
  512. continue;
  513.  
  514. default:
  515.  
  516. printf("Prosze sprobowac ponownie!\n");
  517.  
  518. break;
  519. }
  520. }while(liczba != 6);
  521. return 0;
  522.  
  523. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement