witam wszystkich jako iz jest to moj pierwszy post [browar]
napisalem programik do obliczania pola wypuklych figur plaskich ale dziala dobrze tylko dla ilosci wierzcholkow=3 - jak jest wiecej - zmienia wynik...
jest dosc prosty i absolutnie nie moge dojsc gdzie popelnilem blad... please help me - prosze chociaz o wskazowke...
coz - tym programikiem zaczalem zabawe z C++ ;)
#include <iostream.h>
#include <math.h>
main()
{
float Px1, Px2, Px3, Py1, Py2, Py3;
float pole;
float p;
int liczbapkt, i, x;
float tabx[20];
float taby[20];
{
cout<<"Podaj ilosc wierzcholkow wielokata wypuklego (max 20 pkt):";
cin>>liczbapkt;
cout<<"\n";
if (liczbapkt<3) cout<<"Podaj wiecej danych\n";
else
for(i=1;i<=liczbapkt;i++)
{
cout<<"Podaj wspolrzedna X punktu "<<i<<": ";
cin>>tabx[i]; //do tablicy X wpisuje wszystkie wspolrzedne X
cout<<"\n";
cout<<"podaj wspolrzedna Y punktu "<<i<<": ";
cin>>taby[i]; //do tablicy Y wpisuje wszystkie wspolrzedne Y
cout<<"\n\n";
}
cout<<"\n";
Px1=tabx[liczbapkt];
Py1=taby[liczbapkt];
for(x=1;x<=liczbapkt-2;x++)
{
Px2=tabx[x];
Px3=tabx[x+1];
Py2=taby[x];
Py3=taby[x+1];
p=((Px2-Px1)*(Py3-Py1))-((Px3-Py1)*(Py2-Py1)); //pole trojkatow
p=p/2;
p=sqrt(p*p); //wartosc bezwzgledna
pole=pole+p; //suma pol
}
cout<<"Pole figury wynosi: "<<pole<<"\n\n";
cout<<"Koniec";
}
}
Dziekuje za wszelka pomoc!