Advertisement
Guest User

Untitled

a guest
Apr 29th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.87 KB | None | 0 0
  1. #include <fstream>
  2. #include <string>
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. // Taskai
  8. int taskaiX[400];
  9. int taskaiY[400];
  10. int taskuSkaicius = 0;
  11. //Atkarpos
  12. int atkarpa1X[400];
  13. int atkarpa1Y[400];
  14.  
  15. int atkarpa2X[400];
  16. int atkarpa2Y[400];
  17. int atkarpuSkaicius = 0;
  18. //Trikampiai
  19. int tri1X[400];
  20. int tri1Y[400];
  21.  
  22. int tri2X[400];
  23. int tri2Y[400];
  24.  
  25. int tri3X[400];
  26. int tri3Y[400];
  27.  
  28. int trikampiuSkaicius = 0;
  29.  
  30. void ReadFile()//Skaitymas nelabai veikia
  31. {
  32. ifstream file("Duomenys.txt");
  33. string eil;
  34.  
  35. while (getline(file, eil))
  36. {
  37. int figura = eil[0];
  38. cout << figura << endl;
  39. if(figura == 2)
  40. {
  41. //eilutes ilgis 3 , vadinas taskas
  42. taskaiY[taskuSkaicius] = eil[2];
  43. taskaiY[taskuSkaicius] = eil[4];
  44. taskuSkaicius++;
  45. }
  46. if (figura == 4)
  47. {
  48. //eilutes ilgis 7 , vadinas atkarpa
  49. atkarpa1X[atkarpuSkaicius] = eil[2];
  50. atkarpa1Y[atkarpuSkaicius] = eil[4];
  51.  
  52. atkarpa2X[atkarpuSkaicius] = eil[6];
  53. atkarpa2Y[atkarpuSkaicius] = eil[8];
  54. taskuSkaicius++;
  55. }
  56.  
  57. }
  58. }
  59.  
  60. int KiekLygiagreciuYAsiai()
  61. {
  62. int skaicius = 0;
  63. for(int i = 0; i < atkarpuSkaicius; i++) // Jeigu abudu X taskai yra tokiose paciose kordinatese, tai lygiagretu Y
  64. {
  65. if (atkarpa1X[i] == atkarpa2X[i])
  66. skaicius++;
  67. }
  68. return skaicius;
  69. }
  70.  
  71. int AtstumasTarpDviejuTasku(int x, int y, int a, int b) {
  72. return sqrt(pow(x - a, 2) + pow(y - b, 2));
  73. }
  74.  
  75. int KiekKertaYAsiSuma()
  76. {
  77. int skaicius = 0;
  78. for (int i = 0; i < atkarpuSkaicius; i++)
  79. {
  80. if (atkarpa1X[i] < 0 && atkarpa2X[i] > 0) // Jeigu vienas galas yra pries Y , o kitas po Y, tai vadinas kad kerta
  81. {
  82. skaicius += AtstumasTarpDviejuTasku(atkarpa1X[i], atkarpa1Y[i], atkarpa2X[i], atkarpa2Y[i]);
  83. }
  84. else if(atkarpa1X[i] > 0 && atkarpa2X[i] < 0)
  85. {
  86. skaicius += AtstumasTarpDviejuTasku(atkarpa1X[i], atkarpa1Y[i], atkarpa2X[i], atkarpa2Y[i]);
  87. }
  88. }
  89. return skaicius;
  90. }
  91.  
  92. void TrumpiausiaAtkarpa(int *px, int *py, int *ax, int *ay)
  93. {
  94. int arciausia = 500000;
  95.  
  96. *px = 0;
  97. *py = 0;
  98. *ax = 0;
  99. *ay = 0;
  100.  
  101. for (int i = 0; i < atkarpuSkaicius; i++)
  102. {
  103. if (atkarpa1X[i] > 0 && atkarpa1Y[i] < 0 && atkarpa2X[i] > 0 && atkarpa2Y[i] < 0) //Patikrinam ar 4 ketvirty
  104. {
  105. if(AtstumasTarpDviejuTasku(atkarpa1X[i], atkarpa1Y[i], atkarpa2X[i], atkarpa2Y[i]) < arciausia)
  106. {
  107. arciausia = AtstumasTarpDviejuTasku(atkarpa1X[i], atkarpa1Y[i], atkarpa2X[i], atkarpa2Y[i]);
  108. *px = atkarpa1X[i];
  109. *py = atkarpa1Y[i];
  110. *ax = atkarpa2X[i];
  111. *ay = atkarpa2Y[i];
  112. }
  113. }
  114. }
  115.  
  116. }
  117.  
  118.  
  119. int main()
  120. {
  121. ReadFile();
  122. cout << "Atkarpos lygiagrecios Y asiai " << KiekLygiagreciuYAsiai() << endl;
  123. cout << "Atkarpos kertancios Y asi suma " << KiekKertaYAsiSuma() << endl;
  124.  
  125. int px, py, ax, ay;
  126. TrumpiausiaAtkarpa(&px, &py, &ax, &ay);
  127. cout << "Trumpiausios atkarpos koordinates yra " << px << " " << py << " " << ax << " " << ay << endl;
  128.  
  129.  
  130. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement