Advertisement
Guest User

Untitled

a guest
Jun 19th, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1. void Zad11(){
  2.  
  3. struct autko auto1[3];
  4. auto1[0].cena = 5000;
  5. auto1[0].mobile.marka = "Volkswagen";
  6. auto1[0].mobile.rocznik = 2005;
  7. auto1[0].mobile.przebieg = 100;
  8.  
  9. auto1[1].cena = 4000;
  10. auto1[1].mobile.marka = "Volkswagen";
  11. auto1[1].mobile.rocznik = 2005;
  12. auto1[1].mobile.przebieg = 100;
  13.  
  14. auto1[2].cena = 5000;
  15. auto1[2].mobile.marka = "Audi";
  16. auto1[2].mobile.rocznik = 2008;
  17. auto1[2].mobile.przebieg = 100;
  18.  
  19. FILE *fptr;
  20. fptr = fopen("auto.bin","wb");
  21. if(fptr == NULL){
  22. exit(1);
  23. }
  24.  
  25. fwrite(&auto1,sizeof(auto1),1,fptr);
  26. fclose(fptr);
  27.  
  28. FILE *plik;
  29. plik = fopen("auto.bin","rb");
  30. if(plik == NULL){
  31. exit(1);
  32. }
  33.  
  34. fseek(plik,0,SEEK_END);
  35. int sizeOfStructs = ftell(plik)/sizeof(struct autko);
  36. rewind(plik);
  37. printf("%d",sizeOfStructs);
  38.  
  39. struct autko *oferta = malloc(sizeOfStructs*sizeof(struct autko));
  40. fread(oferta,sizeof(struct autko),sizeOfStructs,plik);
  41. fclose(plik);
  42.  
  43. printf("Po odczytaniu:\n");
  44. for(int i = 0; i < sizeOfStructs;i++){
  45. printf("%d\n",oferta[i].cena);
  46. printf("%s\n",oferta[i].mobile.marka);
  47. printf("%d\n",oferta[i].mobile.rocznik);
  48. printf("%d\n",oferta[i].mobile.przebieg);
  49. printf("\n");
  50. }
  51.  
  52. qsort(oferta,sizeOfStructs,sizeof(struct autko),compare);
  53.  
  54. printf("Po sortowaniu:\n");
  55. for(int i = 0; i < sizeOfStructs;i++){
  56. printf("%d\n",oferta[i].cena);
  57. printf("%s\n",oferta[i].mobile.marka);
  58. printf("%d\n",oferta[i].mobile.rocznik);
  59. printf("%d\n",oferta[i].mobile.przebieg);
  60. printf("\n");
  61. }
  62.  
  63.  
  64. return;
  65. }
  66.  
  67. int compare(const void *a,const void *b){
  68. struct autko* s1 = (struct autko *)a;
  69. struct autko* s2 = (struct autko *)b;
  70.  
  71. if(!strcmp((*s1).mobile.marka,(*s2).mobile.marka)){
  72. return strcmp((*s1).mobile.marka,(*s2).mobile.marka);
  73. } else if((*s1).mobile.rocznik != (*s2).mobile.rocznik){
  74. return (*s2).mobile.rocznik - (*s1).mobile.rocznik;
  75. } else if((*s1).cena != (*s2).cena){
  76. return (*s1).cena - (*s2).cena;
  77. } else {
  78. return (*s1).mobile.przebieg - (*s2).mobile.przebieg;
  79. }
  80.  
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement