Estou com um problema em um programa que calcula a área de uma figura que está no primeiro quadrante do sistema bidimensional. Percebi que a matriz que eu coloquei para armazenar as coordenadas vértices da figura está alterando o valor toda vez que é realizada uma operação. Tem casos que calcula certinho, mas a maioria não.
#include <iostream>
using namespace std;
int main() {
int nvert, i, j;
string fig;
double a, bmenor, bmaior, h, area=0;
cout << "Digite a quantidade de vertices: ";
cin >> nvert;
cout << "Do ponto 1 para o 2 a figura esta na (direita/esquerda): ";
cin >> fig;
double pto[nvert][2];
for (i=0; i<nvert; i++){
cout << "Insira as coordenadas do vertice " << i+1 <<" (x,y): ";
cin >> pto[i][0] >> pto[i][1];
}
for (i=0; i<nvert; i++){
for (j=0; j<2; j++){
cout << pto[i][j] << " ";
}
cout << "\n";
}
i=0;
double integral[i];
while (i < nvert){
if (i != nvert-1){
a = (pto[i][1] - pto[i+1][1])/(pto[i][0] - pto[i+1][0]);
bmaior = pto[i+1][1];
h = pto[i+1][0] - pto[i][0];
} else {
a = (pto[i][1] - pto[0][1])/(pto[i][0] - pto[0][0]);
bmaior = pto[0][1];
h = pto[0][0] - pto[i][0];
}
if (fig == "esquerda"){
h = -h;
}
cout << i << "\n" << "Coeficiente angular: " << a << "\n";
bmenor = pto[i][1];
integral[i] = (bmenor + bmaior) * h / 2;
cout << "Altura: " << h << "\nIntegral: " << integral[i] << "\n\n";
area+=integral[i];
i+=1;
}
for (i=0; i<nvert; i++){
for (j=0; j<2; j++){
cout << pto[i][j] << " ";
}
cout << "\n";
}
cout << "Area: " << area << "\n";
return 0;
}
Alguém sabe o que eu faço para manter os valores da matriz intactos?
Um exemplo de entrada com nvert = 8 e fig = esquerda e as coordenadas abaixo:
Aqui a área tem que dar 7, mas não acontece isso.