Guest User

Untitled

a guest
Dec 4th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.87 KB | None | 0 0
  1. #include <iostream>
  2. #include <math.h>
  3. #include <fstream>
  4. #include <string.h>
  5. #include <cstdlib>
  6. #include <conio.h>
  7. #include <iomanip>
  8.  
  9.  
  10. using namespace std;
  11.  
  12. int main()
  13. {
  14. //tekst wstepu
  15. cout << " Witaj w programie do obliczania odleglosci punktow z uzyciem wspolrzednych." << endl;
  16. cout <<""<< endl;
  17. cout << " Program pobiera z pliku tekstowego o nazwie wspolrzedne.txt ilosc i nazwy punktow, przykladowo nazwy miast oraz wspolrzedne ich polozenia." << endl;
  18. cout <<""<< endl;
  19. cout << " Plik tekstowy musi byc zapisana w formacie: 1 linia zawiera ilosc punktow, w kolejnych liniach zapisana jest nazwa punktu oraz wspolrzedne x i y z precyzja do 6 liczb do przecinku." << endl;
  20. cout <<""<< endl;
  21. cout <<" Plik tekstowy musi znajdowac sie w tej samej lokalizacji co plik wykonywalny!"<< endl;
  22. cout <<""<< endl;
  23. cout << " Program obliczy odleglosc miedzy poszczegolnymi punktami w stopniach i wyswietli je posortowane rosnaco." <<endl;
  24. cout <<""<< endl;
  25. cout <<" Program nie uzgledni kulistosci ziemii, wiec dla duzych odleglosci moga wystapic przeklamania!" << endl;
  26. cout <<""<< endl;
  27.  
  28.  
  29. //mozliwe wyjscia programu.
  30. //return 0 : poprawne dane, prawidlowe wykonanie obliczen zakocnzenie pracy.
  31. //return 1 : nie udalo sie wczytac plik wspolrzedne.txt
  32. //return 2 : wspolrzedne powtarzaja sie.
  33.  
  34.  
  35.  
  36.  
  37.  
  38. fstream plik;
  39.  
  40. plik.open("wspolrzedne.txt");
  41. if(plik.is_open())
  42. {
  43. //pobieranie danych i zapis do tablic
  44. int i=0; //ilosc punktow
  45. int zapisuj; //do petli przy wczytywaniu
  46. plik>>i;
  47. string nazwy[i];
  48. double wspolrzedna_x[i];
  49. double wspolrzedna_y[i];
  50.  
  51.  
  52. double odleglosc_wyjscie[i]={};
  53. string nazwy_wyjscie[i]={};
  54.  
  55.  
  56.  
  57.  
  58. for(zapisuj=0;zapisuj<i;zapisuj++)
  59. {
  60. plik>>nazwy[zapisuj];
  61. plik>>wspolrzedna_x[zapisuj];
  62. plik>>wspolrzedna_y[zapisuj];
  63. }
  64. plik.close();
  65. // koniec wczytywania
  66. //zamkniecie pliku
  67. //start pracy na tablicach
  68.  
  69. //sprawdzenie czy wspolrzedne nie powtarzają sie. Wspolrzedne 2 roznych punktow nie moga byc takie same.
  70. for(int a=0;a<i;a++)
  71. {
  72. for(int b=0;b<i;b++)
  73. {
  74. if(a==b)
  75. {
  76. }
  77. else
  78. {
  79. if(wspolrzedna_x[a]==wspolrzedna_x[b] && wspolrzedna_y[a]==wspolrzedna_y[b])
  80. {
  81. cout <<"Dwa lub wiecej punktow posiada takie same wspolrzedne. Prosze sprawdzic poprawnosc danych wejsciowych" <<endl;
  82. cout <<" Nacisnij dowolny klawisz aby zamknac program" <<endl;
  83.  
  84. getch();
  85. return 2;
  86. }
  87. }
  88. }
  89. }
  90.  
  91.  
  92.  
  93. cout <<"Dane poprawne! Zaczynam prace!"<< endl;
  94. cout <<""<< endl;
  95. cout <<""<< endl;
  96. cout <<"W pliku znajdowalo sie "<<i<<" punktow:"<<endl;
  97. cout <<""<< endl;
  98.  
  99. for(int a=0;a<i;a++)
  100. {
  101. cout<<nazwy[a]<<" "<<fixed << setprecision(6)<<wspolrzedna_x[a]<<" "<<wspolrzedna_y[a]<<endl; //wyswietlanie wczytanych danych
  102. cout <<""<< endl;
  103.  
  104. }
  105.  
  106. cout<<"Wyswietlam odleglosci miedzy punktami: " << endl;
  107. cout <<""<< endl;
  108. cout <<""<< endl;
  109.  
  110.  
  111. int k=0;
  112. for(int a=0;a<i;a++)
  113. {
  114. for(int b=0;b<i;b++)
  115. {
  116.  
  117.  
  118. if(a==b)
  119. {
  120.  
  121. }
  122. else
  123. {
  124. odleglosc_wyjscie[k]=sqrt(pow(wspolrzedna_x[b]-wspolrzedna_x[a],2)+pow(wspolrzedna_y[b]-wspolrzedna_y[a],2));
  125.  
  126. nazwy_wyjscie[k]=("Odleglosc od " +nazwy[a]+" do "+nazwy[b]+ " wynosi ").c_str();
  127. cout<<nazwy_wyjscie[k]<<" "<< fixed << setprecision(7)<< odleglosc_wyjscie[k]<<" stopni." <<endl;
  128. k++;
  129. }
  130. }
  131.  
  132. }
  133.  
  134. cout <<""<< endl;
  135. cout <<""<< endl;
  136. cout<<"Posortowane odleglosci, po usuniecie powtarzajacych sie elementow prezentuja sie nastepujaco: " << endl;
  137. cout <<""<< endl;
  138. cout <<""<< endl;
  139.  
  140. //sortowanie babelkowe;
  141.  
  142. for (int i=0; i<k-1; i++)
  143. for (int j=0; j<k-1; j++)
  144. if (odleglosc_wyjscie[j]>odleglosc_wyjscie[j+1])
  145. {
  146. swap(odleglosc_wyjscie[j], odleglosc_wyjscie[j+1]);
  147. swap(nazwy_wyjscie[j], nazwy_wyjscie[j+1]);
  148. }
  149.  
  150. for (int i = 0; i<k; i++)
  151. {
  152.  
  153. if(odleglosc_wyjscie[i+1]==odleglosc_wyjscie[i])
  154. {
  155.  
  156. }
  157. else
  158. cout <<nazwy_wyjscie[i] << " " << odleglosc_wyjscie[i] <<" stopni "<<endl;
  159. }
  160.  
  161. getch();
  162.  
  163. return 0;
  164.  
  165.  
  166. }
  167. else
  168. {
  169. cout <<""<< endl;
  170. cout <<""<< endl;
  171. cout<<"Nie mozna bylo otworzyc pliku."<<endl;
  172. cout <<""<< endl;
  173. cout<<"Nacisnij dowolny klawisz, aby zamknac program."<<endl;
  174. getch();
  175.  
  176. return 1;
  177. }
  178.  
  179.  
  180. }
Advertisement
Add Comment
Please, Sign In to add comment