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