Witam, od pewnego czasu próbuję rozwiązać zadanie: http://pl.spoj.com/problems/BAJTELEK/ .
Skorzystałem ze wzoru pozwalającego na obliczenia pola dowolnego wielokąta prostego na podstawie
współrzędnych jego wierzchołków. Program wyświetla poprawne odpowiedzi dla danych z przykładu, ale
wciąż dostaję błąd SIGSEGV. Użycie dynamicznej alokacji pamięci nie pomogło. Wie ktoś, w czym leży
problem?
#include<iostream>
using namespace std;
int main () {
int m; // liczba zestawow danych
int x[1000], y[1000]; // wspolrzedne wierzcholkow
int n; // liczba wierzcholkow
float S[2]; // pola wielokatow
int T; // liczba potrzebnych bitokul
cin>>m;
for (int i=0; i<m; i++) {
for (int j=0; j<2; j++) {
n=0;
cin>>x[0]>>y[0];
do {
n++;
cin>>x[n]>>y[n];
} while ( x[n]!=x[0] || y[n]!=y[0] );
S[j]=0;
for (int k=0; k<n; k++) {
S[j] = S[j] + ( x[k] * y[k+1] - x[k+1] * y[k] );
}
S[j]=S[j]/2;
}
T = S[0] * 10 + ( S[1] - S[0] ) * 6;
cout<<T<<endl;
}
system ("pause");
return 0;
}