Obliczanie pola metodą analityczną.

Obliczanie pola metodą analityczną.
IX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
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:

Kopiuj
#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 :)

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

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

IX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
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:

Kopiuj
#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;   
}

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
   for(int i=0;i<n;++i) P+=y[i]*(x[(i+1)%n]-x[(i+n-1)%n]);
   P=fabs(P)/2;
n0name_l
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2412
0
Kopiuj
int n;
cin>>n;
for(int i=0;i<n;i++)

A co sie stanie jak 200 sobie wpisze ?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.