fork(1) download
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. struct Point {
  5. char letter = {};
  6. int A = {};
  7. int B = {};
  8. double distance = 0.0;
  9. };
  10.  
  11. //hypotenuse - przeciwprostokÄ…tna c^2 = a^2 + b^2
  12. double hypotenuse (Point arrayPoint[], int sizeTab);
  13. void sort (Point arrayPoint[] , int sizeTab);
  14. void show (Point arrayPoint[] , int sizeTab);
  15.  
  16. int main()
  17. {
  18. int howManySteps = 0;
  19. std::cin >> howManySteps;
  20. do {
  21. int size = 0;
  22. std::cin >> size;
  23. Point tabPoints[size];
  24.  
  25. for (int i = 0; i < size ; ++i) {
  26. std::cin >> tabPoints[i].letter >> tabPoints[i].A >> tabPoints[i].B;
  27. tabPoints[i].distance = hypotenuse( tabPoints , i );
  28. }
  29. sort( tabPoints , size );
  30. show( tabPoints , size );
  31.  
  32. --howManySteps;
  33. std::cout << std::endl;
  34. } while (howManySteps > 0);
  35. return 0;
  36. }
  37.  
  38. double hypotenuse (Point arrayPoint[], int sizeTab) {
  39. if (arrayPoint[sizeTab].A == 0) {
  40. return arrayPoint[sizeTab].B;
  41. }
  42. else if (arrayPoint[sizeTab].B == 0) {
  43. return arrayPoint[sizeTab].A;
  44. }
  45. else {
  46. double c = sqrt( (arrayPoint[sizeTab].A * arrayPoint[sizeTab].A) + (arrayPoint[sizeTab].B * arrayPoint[sizeTab].B) );
  47. return c;
  48. }
  49. }
  50.  
  51. void sort (Point arrayPoint[] , int sizeTab) {
  52. for(int i = 0; i < sizeTab ; ++i) {
  53. for (int j = i + 1 ; j < sizeTab ; ++j) {
  54. Point minTemp;
  55. if (arrayPoint[i].distance > arrayPoint[j].distance) {
  56.  
  57. minTemp.letter = arrayPoint[j].letter ;
  58. minTemp.A = arrayPoint[j].A ;
  59. minTemp.B = arrayPoint[j].B ;
  60. minTemp.distance = arrayPoint[j].distance ;
  61.  
  62. arrayPoint[j].letter = arrayPoint[i].letter ;
  63. arrayPoint[j].A = arrayPoint[i].A ;
  64. arrayPoint[j].B = arrayPoint[i].B ;
  65. arrayPoint[j].distance = arrayPoint[i].distance ;
  66.  
  67. arrayPoint[i].letter = minTemp.letter ;
  68. arrayPoint[i].A = minTemp.A ;
  69. arrayPoint[i].B = minTemp.B ;
  70. arrayPoint[i].distance = minTemp.distance ;
  71. }
  72.  
  73. }
  74. }
  75. }
  76.  
  77. void show (Point arrayPoint[] , int sizeTab) {
  78. for (int i = 0 ; i < sizeTab ; ++i) {
  79. std::cout << arrayPoint[i].letter << " " << arrayPoint[i].A << " " << arrayPoint[i].B << std::endl;
  80. }
  81. }
  82.  
Success #stdin #stdout 0s 15240KB
stdin
2
3
A 0 0
C 5 5
B 1 -1

1 
X 1 1
stdout
A 0 0
B 1 -1
C 5 5

X 1 1