// 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()