Advertisement
olekturbo

mati hautameki

Mar 28th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. #define MAX_DL_IM 11
  5. #define MAX_DL_NA 17
  6. #define DUZO 10000
  7.  
  8. typedef struct {
  9. char imie[MAX_DL_IM];
  10. char nazwisko[MAX_DL_NA];
  11. int pensja;
  12. } osoba;
  13.  
  14. osoba tab[DUZO];
  15.  
  16. int czytanie(char nazwa[]);
  17. void sortowanie(int ile);
  18. void pisanie(char wynik[], int ile);
  19.  
  20. int main(int arg_num, char* arg[]) {
  21. if (arg_num == 3) {
  22. int ile = czytanie(arg[1]);
  23. if (ile > 0) {
  24. sortowanie(ile);
  25. pisanie(arg[2], ile);
  26. }
  27. }
  28. else
  29. printf("\n Poprawne wywolanie: './porzadkuj dane wynik'\n\n");
  30. return 0;
  31. }
  32.  
  33. int czytanie(char nazwa[]) {
  34.  
  35. FILE* plik = fopen(nazwa,"r");
  36. if(plik==NULL) return 1;
  37. int i = 0, p;
  38.  
  39. p = fscanf(plik,"%s",tab[i].imie);
  40. while(p > 0) {
  41.  
  42. fscanf(plik,"%s",tab[i].nazwisko);
  43. fscanf(plik,"%i",&tab[i].pensja);
  44. i++;
  45. p = fscanf(plik,"%s",tab[i].imie);
  46. }
  47.  
  48. fclose(plik);
  49.  
  50. return i;
  51.  
  52. }
  53.  
  54. void sortowanie(int ile) {
  55.  
  56. int i, j;
  57. char tmp[MAX_DL_NA+1];
  58.  
  59. for(i = 0; i < ile; i++) {
  60.  
  61. for(j = 1; j <ile-i; j++) {
  62.  
  63. if(strcmp(tab[j-1].nazwisko,tab[j].nazwisko) > 0) {
  64.  
  65. strcpy(tmp,tab[j-1].nazwisko);
  66. strcpy(tab[j-1].nazwisko,tab[j].nazwisko);
  67. strcpy(tab[j].nazwisko,tmp);
  68.  
  69. }
  70.  
  71. else if(strcmp(tab[j-1].nazwisko,tab[j].nazwisko) == 0) {
  72.  
  73. strcpy(tmp,tab[j-1].imie);
  74. strcpy(tab[j-1].imie,tab[j].imie);
  75. strcpy(tab[j].imie,tmp);
  76.  
  77. }
  78.  
  79. }
  80.  
  81. }
  82.  
  83. }
  84.  
  85. void pisanie(char wynik[], int ile) {
  86.  
  87. int i;
  88.  
  89. FILE* plik_nowy = fopen(wynik,"w");
  90.  
  91. for(i = 0; i < ile; i++) {
  92.  
  93. fprintf(plik_nowy, "%s ", tab[i].imie);
  94. fprintf(plik_nowy, "%s ", tab[i].nazwisko);
  95. fprintf(plik_nowy, "%i \n", tab[i].pensja);
  96.  
  97. }
  98.  
  99. fclose(plik_nowy);
  100.  
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement