// PWXY.cpp - pole wieloboku ze wspolrzednych
Transkrypt
// PWXY.cpp - pole wieloboku ze wspolrzednych
// PWXY.cpp - pole wieloboku ze wspolrzednych - zapis wynikow do pliku PolaWyn.txt" // rozmiar tablicy ustalony po uruchomieniu programu podaniu danych // dolaczenie bibliotek #include <iostream> #include <stdio.h> #include <fstream> #include <stdlib.h> // definicje stalych i makro w define #define TAB "\t" #define WYN "PolaWyn.txt" #define NL cout << endl using namespace std; // funkcja glowna int main() { int n, rozmiar; // ilosc punktow wieloboku char dz[20]; // dlugosc napisu nazwy dzialki system("cls"); system("date/t"); system("time/t"); cout << "Program PWXY. cpp\n"; cout << "\nObliczenie pol dzialek (wielobokow zamknietych) ze wspolrzednych" << endl; cout << "\nWzor: " << endl; cout << "2P=Suma(X[i]*(Y[i=1]-Y[i-1] -2P=Suma(Y[i]*(X[i=1]-X[i-1] " << endl; ofstream fw(WYN); // otwarcie pliku wynikow PolaWyn.txt do zapisu // fw fw fw fw fw zapis do pliku << "Program PWXY. cpp\n"; << "Obliczenie pol dzialek (wielobokow zamknietych) ze wspolrzednych" << endl; << "\nWzory: " << endl; << "2P=Suma(X[i]*(Y[i=1]-Y[i-1] -2P=Suma(Y[i]*(X[i=1]-X[i-1] " << endl; << "Pole = (2P + (-2P) / 4 " << endl << endl; // petla do do { cout <<"\nPodaj ilosc punktow, 0 - koniec: "; cin >>n; // wprowadzenie ilosci punktow if (n==0) break; // wyjscie z petlli gdy n=0 rozmiar=n+2; // zwiekszenie rozmiaru tablicy o 2 cin.ignore(); long tabN[rozmiar]; // definicja tablicy numerow float tabX[rozmiar], tabY[rozmiar]; // definicja tablic wspolrzednych float s1=0, s2=0; int suma = 0; cout << "Podaj nazwe dzialki (wieloboku zamknietego) " ; gets(dz); //nazwa dzialki - wieloboku cout << endl; for (unsigned int i = 1; i <= n; ++i) //pobieranie liczb... { cout <<"Podaj NR punktu "<< i <<" : "; cin >>tabN[i]; // nr punktu cout << "Podaj X Y : "; cin >>tabX[i] >> tabY[i]; // x i y cin.ignore(); } tabN[0]=tabN[n]; tabX[0]=tabX[n]; tabY[0]=tabY[n]; tabN[n+1]=tabN[1]; tabX[n+1]=tabX[1]; tabY[n+1]=tabY[1]; cout << "Wykaz punktow: Nr cout << "Lp Nr X X Y " << endl; Y " << endl; fw << "Wykaz punktow: " << endl; fw << "Lp Nr X Y " << endl; for(int i=1; i<=n; i++ ) { // poczatek for cout << i << TAB << tabN[i] << TAB << tabX[i] << TAB << tabY[i] << endl; fw << i << TAB << tabN[i] << TAB << tabX[i] << TAB << tabY[i] << endl; s1=s1+ tabX[i]*(tabY[i+1]-tabY[i-1]); s2=s2+ tabY[i]*(tabX[i+1]-tabX[i-1]); } // koniec for fw << "\n"; s2=-s2; // zamiana pola na dodatnie cout << endl; cout << "2P= " << s1 << " -2P=" << -s2 << endl; cout << "Dzialka: " << dz << TAB << "Pole = " << 0.25*(s1+s2) << endl; fw << "Dzialka: " << dz << TAB << "Pole = " << 0.25*(s1+s2) << endl; fw << endl << endl; } while (n >0); // koniec petli do fw.close(); // zamkniecie pliku cin.ignore(); NL; cout << "Wyniki w pliku: " << WYN << endl; cout << "Nacisnij cos "; cin.get(); // czeka na klawisz return 0; // zwraca funkcja glowna main() } // koniec main()