Obliczanie pola metodą analityczną.

0

Witam
Mam napisać kod, który obliczy pole metodą analityczną, lecz pojawia się pewien błąd, którego nie mogę zlokalizować. Program ma najpierw wczytywać liczbę wierzchołków figury, potem współrzędne każdego wierzchołka.

Oto kod:

#include<iostream>
using namespace std;
int main()
{
double P=0;
 double x[100];
 double y[100];
int n;
cin>>n;
for(int i=1;i<=n;i++)
{cin>>x[i]>>y[i];
cout<<x[i]<<" "<<y[i]<<endl;
}

for(int j=1;j<=n;j++)
P+= ((y[j]*(x[j-1]-x[j+1]))/2);
                                     

 
 cout<<P<<endl;
 
 
 
 system("pause");
 return 0;   
}

Z góry dziękuję za wskazanie błędów :)

0

indeksacja tablic t C/C++ jest od 0.
Musisz rozpatrywać punkty cyklicznie, czyli trochę inna formuła dla pierwszego oraz ostatniego punktu.

0

Nie do końca rozumiem jaka jest ta inna formuła, ponieważ moje doświadczenie nie jest jeszcze zbyt wielkie, ale rozumiem, że indeksacja powinna wyglądać tak:

#include<iostream>
using namespace std;
int main()
{
double P=0;
 double x[100];
 double y[100];
int n;
cin>>n;
for(int i=0;i<n;i++)
{cin>>x[i]>>y[i];
cout<<x[i]<<" "<<y[i]<<endl;
}

for(int j=1;j<=n;j++)
P+= ((y[j]*(x[j-1]-x[j+1]))/2);

 
 cout<<P<<endl;
 
 
 
 
 system("pause");
 return 0;   
}

1
   for(int i=0;i<n;++i) P+=y[i]*(x[(i+1)%n]-x[(i+n-1)%n]);
   P=fabs(P)/2;
0
int n;
cin>>n;
for(int i=0;i<n;i++)

A co sie stanie jak 200 sobie wpisze ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1