Advertisement
Guest User

czlowiek

a guest
Mar 28th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. // Sortowania z pliku.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <conio.h>
  6. #include <cstring>
  7. struct czlowiek{
  8. char imie[256];
  9. char nazwisko[256];
  10. int id;
  11. };
  12.  
  13. void wypisz_tab(czlowiek *tab,int lel){
  14. for(int i=0;i<lel;i++){
  15. printf("%s %s %d\n",tab[i].imie,tab[i].nazwisko,tab[i].id);
  16. }
  17.  
  18. }
  19.  
  20. void sortowanie_babelkowe_id(czlowiek *tab, int n)
  21. {
  22. for (int i=1; i<n; i++)
  23. {
  24. for (int j=n-1; j>=1; j--)
  25. {
  26. if (tab[j].id<tab[j-1].id)
  27. {
  28. int buforid;
  29. char bufor_imie[256];
  30. char bufor_nazwisko[256];
  31. buforid=tab[j-1].id;
  32. tab[j-1].id=tab[j].id;
  33. tab[j].id=buforid;
  34.  
  35. strcpy(bufor_imie,tab[j-1].imie);
  36. strcpy(tab[j-1].imie,tab[j].imie);
  37. strcpy(tab[j].imie,bufor_imie);
  38.  
  39. strcpy(bufor_nazwisko,tab[j-1].nazwisko);
  40. strcpy(tab[j-1].nazwisko,tab[j].nazwisko);
  41. strcpy(tab[j].nazwisko,bufor_nazwisko);
  42. }
  43. }
  44. }
  45. }
  46.  
  47. void sortowanie_babelkowe_imie(czlowiek *tab, int n){
  48. for (int i=1; i<n; i++)
  49. {
  50. for (int j=n-1; j>=1; j--)
  51. {
  52. if (strcoll(tab[j].imie,tab[j-1].imie)<0)
  53. {
  54. int buforid;
  55. char bufor_imie[256];
  56. char bufor_nazwisko[256];
  57. buforid=tab[j-1].id;
  58. tab[j-1].id=tab[j].id;
  59. tab[j].id=buforid;
  60.  
  61. strcpy(bufor_imie,tab[j-1].imie);
  62. strcpy(tab[j-1].imie,tab[j].imie);
  63. strcpy(tab[j].imie,bufor_imie);
  64.  
  65. strcpy(bufor_nazwisko,tab[j-1].nazwisko);
  66. strcpy(tab[j-1].nazwisko,tab[j].nazwisko);
  67. strcpy(tab[j].nazwisko,bufor_nazwisko);
  68. }
  69. }
  70. }
  71. }
  72.  
  73. void quicksort_id(czlowiek *tablica, int lewy, int prawy)
  74. {
  75. int v=tablica[(lewy+prawy)/2].id;
  76. int i,j,x;
  77. i=lewy;
  78. j=prawy;
  79. do{
  80. while (tablica[i].id>v) i++;
  81. while (tablica[j].id<v) j--;
  82. if (i<=j){
  83. char bufor_imie[256];
  84. char bufor_nazwisko[256];
  85. x=tablica[i].id;
  86. tablica[i].id=tablica[j].id;
  87. tablica[j].id=x;
  88.  
  89. strcpy(bufor_imie,tablica[i].imie);
  90. strcpy(tablica[i].imie,tablica[j].imie);
  91. strcpy(tablica[j].imie,bufor_imie);
  92.  
  93. strcpy(bufor_nazwisko,tablica[i].nazwisko);
  94. strcpy(tablica[i].nazwisko,tablica[j].nazwisko);
  95. strcpy(tablica[j].nazwisko,bufor_nazwisko);
  96.  
  97. i++; j--;
  98. }
  99. }while (i<=j);
  100. if (j>lewy) quicksort_id(tablica,lewy, j);
  101. if (i<prawy) quicksort_id(tablica, i, prawy);
  102. }
  103.  
  104. void quicksort_imie(czlowiek *tablica, int lewy, int prawy)
  105. {
  106. char *v=tablica[((lewy+prawy)/2)].imie;
  107. int i,j,x;
  108. i=lewy;
  109. j=prawy;
  110. do{
  111. while (strcmp(tablica[i].imie,v)<0) i++;
  112. while (strcmp(tablica[j].imie,v)>0) j--;
  113. if (i<=j){
  114. char bufor_imie[256];
  115. char bufor_nazwisko[256];
  116. x=tablica[i].id;
  117. tablica[i].id=tablica[j].id;
  118. tablica[j].id=x;
  119.  
  120. strcpy(bufor_imie,tablica[i].imie);
  121. strcpy(tablica[i].imie,tablica[j].imie);
  122. strcpy(tablica[j].imie,bufor_imie);
  123.  
  124. strcpy(bufor_nazwisko,tablica[i].nazwisko);
  125. strcpy(tablica[i].nazwisko,tablica[j].nazwisko);
  126. strcpy(tablica[j].nazwisko,bufor_nazwisko);
  127. i++; j--;
  128. }
  129. }while (i<=j);
  130. if (j>lewy) quicksort_id(tablica,lewy, j);
  131. if (i<prawy) quicksort_id(tablica, i, prawy);
  132. }
  133.  
  134.  
  135. int _tmain(int argc, _TCHAR* argv[])
  136. {
  137.  
  138. FILE *plik,*plik2;//zmienne plikowe
  139.  
  140. plik=fopen("dane.txt","r");
  141. if(!plik){
  142. fprintf(stderr,"Blad otwarcia pliku!\n");
  143. getch();
  144. return 1;
  145. }
  146.  
  147. plik2=fopen("dane2.txt","w");
  148. if(!plik){
  149. fprintf(stderr,"Blad otwarcia pliku!\n");
  150. getch();
  151. return 1;
  152. }
  153.  
  154. char buff[256];
  155. int licznik=0;
  156.  
  157.  
  158. for(int i=0;!feof(plik);i++){
  159. fgets(buff,255,plik);
  160. licznik++;
  161. }
  162.  
  163.  
  164. printf("Licznik to %d\n",licznik);
  165.  
  166. fseek(plik,0,SEEK_SET);
  167.  
  168. czlowiek *osoba=new czlowiek[licznik];
  169.  
  170. for(int i=0;!feof(plik);i++){
  171. fscanf(plik,"%s %s %d",&osoba[i].imie,&osoba[i].nazwisko,&osoba[i].id);
  172. }
  173. fseek(plik,0,SEEK_SET);
  174.  
  175. wypisz_tab(osoba,licznik);
  176. puts("");
  177.  
  178.  
  179.  
  180. for(int i=0;i<licznik;i++){
  181. fprintf(plik2,"%s %s %d\n",osoba[i].imie,osoba[i].nazwisko,osoba[i].id);
  182. }
  183.  
  184. delete(osoba);
  185. fclose(plik);
  186. fclose(plik2);
  187.  
  188.  
  189. getch();
  190. return 0;
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement