Advertisement
peterzig

[AISD] Sortowanie trójek liczb

Sep 17th, 2016
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.52 KB | None | 0 0
  1. // [AISD] Sortowanie trójek.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. //////////////////////sortowanie.txt////////////////////////
  5. 3.0 2.0 5.5
  6. 1.0 5.0 2.0
  7. 8.3 2.1 4.0
  8. 4.5 3.3 6.6
  9. 9.0 1.0 2.1
  10. 7.0 11.0 12.0
  11. 6.0 8.4 2.6
  12. 11.0 4.0 5.0
  13. 10.2 5.0 2.4
  14. 1.0 2.55 3.14
  15. ////////////////////////////////////////////////////////////
  16.  
  17. #include "stdafx.h"
  18. #include <conio.h>
  19.  
  20. FILE *plik;
  21.  
  22. struct point
  23. {
  24. public:
  25.     float x, y, z;
  26. };
  27.  
  28. float findMax(float x, float y, float z)
  29. {
  30.     float max = x;
  31.     if (y>max) max = y;
  32.     if (z>max) max = z;
  33.     return max;
  34. }
  35.  
  36. void Sortowanie(point tab[], const int n)
  37. {
  38.     float x, y, z;
  39.  
  40.     switch (n)
  41.     {
  42.     case 1:
  43.         printf("\nSortowanie rosnaco wedlug sredniej.\n");
  44.  
  45.         for (int i = 0; i<10; ++i)
  46.         {
  47.             int k = i;
  48.             for (int j = i + 1; j<10; ++j) if ((tab[j].x + tab[j].y + tab[j].z) / 3 < (tab[k].x + tab[k].y + tab[k].z) / 3) k = j;
  49.  
  50.             x = tab[k].x;
  51.             y = tab[k].y;
  52.             z = tab[k].z;
  53.             tab[k].x = tab[i].x;
  54.             tab[k].y = tab[i].y;
  55.             tab[k].z = tab[i].z;
  56.             tab[i].x = x;
  57.             tab[i].y = y;
  58.             tab[i].z = z;
  59.         }
  60.  
  61.         for (int i = 0; i<10; ++i) printf("\n[%2.2f, %2.2f, %2.2f] Srednia: %2.2f", tab[i].x, tab[i].y, tab[i].z, (tab[i].x + tab[i].y + tab[i].z) / 3);
  62.  
  63.         break;
  64.     case 2:
  65.         printf("\nSortowanie malejaco wedlug sredniej.\n");
  66.  
  67.         for (int i = 0; i<10; ++i)
  68.         {
  69.             int k = i;
  70.             for (int j = i + 1; j<10; ++j) if ((tab[j].x + tab[j].y + tab[j].z) / 3 >(tab[k].x + tab[k].y + tab[k].z) / 3) k = j;
  71.  
  72.             x = tab[k].x;
  73.             y = tab[k].y;
  74.             z = tab[k].z;
  75.             tab[k].x = tab[i].x;
  76.             tab[k].y = tab[i].y;
  77.             tab[k].z = tab[i].z;
  78.             tab[i].x = x;
  79.             tab[i].y = y;
  80.             tab[i].z = z;
  81.  
  82.         }
  83.         for (int i = 0; i<10; ++i) printf("\n[%2.2f, %2.2f, %2.2f] Srednia: %2.2f", tab[i].x, tab[i].y, tab[i].z, (tab[i].x + tab[i].y + tab[i].z) / 3);
  84.  
  85.         break;
  86.     case 3:
  87.         printf("\nSortowanie rosnaco wedlug najwiekszej wartosci.\n");
  88.  
  89.         for (int i = 0; i<10; ++i)
  90.         {
  91.             int k = i;
  92.             for (int j = i + 1; j<10; ++j) if (findMax(tab[j].x, tab[j].y, tab[j].z) < findMax(tab[k].x, tab[k].y, tab[k].z)) k = j;
  93.  
  94.             x = tab[k].x;
  95.             y = tab[k].y;
  96.             z = tab[k].z;
  97.             tab[k].x = tab[i].x;
  98.             tab[k].y = tab[i].y;
  99.             tab[k].z = tab[i].z;
  100.             tab[i].x = x;
  101.             tab[i].y = y;
  102.             tab[i].z = z;
  103.         }
  104.  
  105.         for (int i = 0; i<10; ++i) printf("\n[%2.2f, %2.2f, %2.2f] Najwieksza wartosc: %2.2f", tab[i].x, tab[i].y, tab[i].z, findMax(tab[i].x, tab[i].y, tab[i].z));
  106.  
  107.         break;
  108.     case 4:
  109.         printf("\nSortowanie malejaco wedlug najwiekszej wartosci.\n");
  110.  
  111.         for (int i = 0; i<10; ++i)
  112.         {
  113.             int k = i;
  114.             for (int j = i + 1; j<10; ++j) if (findMax(tab[j].x, tab[j].y, tab[j].z) > findMax(tab[k].x, tab[k].y, tab[k].z)) k = j;
  115.  
  116.             x = tab[k].x;
  117.             y = tab[k].y;
  118.             z = tab[k].z;
  119.             tab[k].x = tab[i].x;
  120.             tab[k].y = tab[i].y;
  121.             tab[k].z = tab[i].z;
  122.             tab[i].x = x;
  123.             tab[i].y = y;
  124.             tab[i].z = z;
  125.         }
  126.  
  127.         for (int i = 0; i<10; ++i) printf("\n[%2.2f, %2.2f, %2.2f] Najwieksza wartosc: %2.2f", tab[i].x, tab[i].y, tab[i].z, findMax(tab[i].x, tab[i].y, tab[i].z));
  128.  
  129.         break;
  130.     default:
  131.         printf("Bledna wartosc!");
  132.         break;
  133.     }
  134. }
  135.  
  136. int main()
  137. {
  138.     char *fileName = "sortowanie.txt";
  139.     if ((plik = fopen(fileName, "r")) == NULL)
  140.     {
  141.         printf("Blad otwarcia %s!", fileName);
  142.         _getch();
  143.         return 1;
  144.     };
  145.     point tabl[30];
  146.  
  147.     for (int i = 0; i<10; ++i)
  148.     {
  149.         fscanf(plik, "%f%f%f", &tabl[i].x, &tabl[i].y, &tabl[i].z);
  150.     }
  151.     Sortowanie(tabl, 1);
  152.     printf("\n");
  153.     Sortowanie(tabl, 2);
  154.     printf("\n");
  155.     Sortowanie(tabl, 3);
  156.     printf("\n");
  157.     Sortowanie(tabl, 4);
  158.  
  159.     _getch();
  160.     return 0;
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement