1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
#include <iostream>
using namespace std;
double* PedirDatos (double* x,int num);
double CalcArea (double* x,double* y,int num);
void Imprimedatos (double* x,double* y, double area,int num);
void main()
{
int num;
double area;
cout<<"¿El área encerrada entre cuántos puntos quiere calcular?: ";
cin>>num;
if (num <= 0){exit(0);}
system("cls");
double *x = new double[num];
double *y = new double[num];
if (x == NULL) {cout<<"Error, no hay emoria"; exit(0);}
if (y == NULL) {cout<<"Error, no hay emoria"; exit(0);}
cout<<"Vamos a recoger las coordenadas X de sus "<<num<<" coordenadas:\n";
x = PedirDatos ( x, num);//1A
cout<<"Vamos a recoger las coordenadas Y de sus "<<num<<" coordenadas:\n";
y = PedirDatos ( y, num);//1B
system("cls");
area = CalcArea ( x, y, num);//2
Imprimedatos (x, y, area,num);//3
delete [] x;
delete [] y;
}
//hacer el vector dinamico. (Los argumentos de entrada van a ser x e y
//por lo qu ese va a "invocar" dos veces a la función "PedirDatos"
double* PedirDatos (double* x,int num)
{
for (int i = 0 ; i<=num-1 ; i++)
{
cout<<i+1<<") = ";
cin>>x[i];
cout<<endl;
system("cls");
}
return x;
}
double CalcArea (double* x,double* y,int num)
{
double area = 0;
double estacionario = 0;
for (int ii = 0 ; ii<=num-2 ; ii++)
{
estacionario = ((x[ii]*y[ii+1])-(y[ii]*x[ii+1]));
if (estacionario<0){area =area + estacionario * (-1);}else{area = area + estacionario;}
}
area = area / 2;
return area;
}
void Imprimedatos (double* x,double* y, double area,int num)
{
cout<<"\t *** CALCULO DE AREAS***\n\n";
cout<<"AREA = "<<area<<"."<<endl;
for (int j = 0 ; j<num ; j++)
{
cout<<j<<"(X"<<j<<",Y"<<j<<") = "<<"( "<<x[j]<<" , "<<y[j]<<")";
cout<<endl;
}
}
|