Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <math.h>
- #include <fstream>
- #include <string.h>
- #include <cstdlib>
- #include <conio.h>
- #include <iomanip>
- using namespace std;
- int main()
- {
- //tekst wstepu
- cout << " Witaj w programie do obliczania odleglosci punktow z uzyciem wspolrzednych." << endl;
- cout <<""<< endl;
- cout << " Program pobiera z pliku tekstowego o nazwie wspolrzedne.txt ilosc i nazwy punktow, przykladowo nazwy miast oraz wspolrzedne ich polozenia." << endl;
- cout <<""<< endl;
- 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;
- cout <<""<< endl;
- cout <<" Plik tekstowy musi znajdowac sie w tej samej lokalizacji co plik wykonywalny!"<< endl;
- cout <<""<< endl;
- cout << " Program obliczy odleglosc miedzy poszczegolnymi punktami w stopniach i wyswietli je posortowane rosnaco." <<endl;
- cout <<""<< endl;
- cout <<" Program nie uzgledni kulistosci ziemii, wiec dla duzych odleglosci moga wystapic przeklamania!" << endl;
- cout <<""<< endl;
- //mozliwe wyjscia programu.
- //return 0 : poprawne dane, prawidlowe wykonanie obliczen zakocnzenie pracy.
- //return 1 : nie udalo sie wczytac plik wspolrzedne.txt
- //return 2 : wspolrzedne powtarzaja sie.
- fstream plik;
- plik.open("wspolrzedne.txt");
- if(plik.is_open())
- {
- //pobieranie danych i zapis do tablic
- int i=0; //ilosc punktow
- int zapisuj; //do petli przy wczytywaniu
- plik>>i;
- string nazwy[i];
- double wspolrzedna_x[i];
- double wspolrzedna_y[i];
- double odleglosc_wyjscie[i]={};
- string nazwy_wyjscie[i]={};
- for(zapisuj=0;zapisuj<i;zapisuj++)
- {
- plik>>nazwy[zapisuj];
- plik>>wspolrzedna_x[zapisuj];
- plik>>wspolrzedna_y[zapisuj];
- }
- plik.close();
- // koniec wczytywania
- //zamkniecie pliku
- //start pracy na tablicach
- //sprawdzenie czy wspolrzedne nie powtarzają sie. Wspolrzedne 2 roznych punktow nie moga byc takie same.
- for(int a=0;a<i;a++)
- {
- for(int b=0;b<i;b++)
- {
- if(a==b)
- {
- }
- else
- {
- if(wspolrzedna_x[a]==wspolrzedna_x[b] && wspolrzedna_y[a]==wspolrzedna_y[b])
- {
- cout <<"Dwa lub wiecej punktow posiada takie same wspolrzedne. Prosze sprawdzic poprawnosc danych wejsciowych" <<endl;
- cout <<" Nacisnij dowolny klawisz aby zamknac program" <<endl;
- getch();
- return 2;
- }
- }
- }
- }
- cout <<"Dane poprawne! Zaczynam prace!"<< endl;
- cout <<""<< endl;
- cout <<""<< endl;
- cout <<"W pliku znajdowalo sie "<<i<<" punktow:"<<endl;
- cout <<""<< endl;
- for(int a=0;a<i;a++)
- {
- cout<<nazwy[a]<<" "<<fixed << setprecision(6)<<wspolrzedna_x[a]<<" "<<wspolrzedna_y[a]<<endl; //wyswietlanie wczytanych danych
- cout <<""<< endl;
- }
- cout<<"Wyswietlam odleglosci miedzy punktami: " << endl;
- cout <<""<< endl;
- cout <<""<< endl;
- int k=0;
- for(int a=0;a<i;a++)
- {
- for(int b=0;b<i;b++)
- {
- if(a==b)
- {
- }
- else
- {
- odleglosc_wyjscie[k]=sqrt(pow(wspolrzedna_x[b]-wspolrzedna_x[a],2)+pow(wspolrzedna_y[b]-wspolrzedna_y[a],2));
- nazwy_wyjscie[k]=("Odleglosc od " +nazwy[a]+" do "+nazwy[b]+ " wynosi ").c_str();
- cout<<nazwy_wyjscie[k]<<" "<< fixed << setprecision(7)<< odleglosc_wyjscie[k]<<" stopni." <<endl;
- k++;
- }
- }
- }
- cout <<""<< endl;
- cout <<""<< endl;
- cout<<"Posortowane odleglosci, po usuniecie powtarzajacych sie elementow prezentuja sie nastepujaco: " << endl;
- cout <<""<< endl;
- cout <<""<< endl;
- //sortowanie babelkowe;
- for (int i=0; i<k-1; i++)
- for (int j=0; j<k-1; j++)
- if (odleglosc_wyjscie[j]>odleglosc_wyjscie[j+1])
- {
- swap(odleglosc_wyjscie[j], odleglosc_wyjscie[j+1]);
- swap(nazwy_wyjscie[j], nazwy_wyjscie[j+1]);
- }
- for (int i = 0; i<k; i++)
- {
- if(odleglosc_wyjscie[i+1]==odleglosc_wyjscie[i])
- {
- }
- else
- cout <<nazwy_wyjscie[i] << " " << odleglosc_wyjscie[i] <<" stopni "<<endl;
- }
- getch();
- return 0;
- }
- else
- {
- cout <<""<< endl;
- cout <<""<< endl;
- cout<<"Nie mozna bylo otworzyc pliku."<<endl;
- cout <<""<< endl;
- cout<<"Nacisnij dowolny klawisz, aby zamknac program."<<endl;
- getch();
- return 1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment