martes, 21 de mayo de 2013

Sumar cualquier número de vectores (plano)



Este programa es el mismo del otro día solo que algo mejorado puesto que permite sumar cualquier número de vectores. Tengo algunas dudas con los ángulos límite del tipo 180º, 90º, 270º, etc. Creo que es preferible dar los grados solo hasta 180º como positivos y negativos; por ejemplo en vez de 300º,  darle -60º. Solo sirve para vectores en el plano. Para el espacio creo que se podrá ampliar fácilmente.

#include<iostream>
#include<cmath>
#include "polarrect.h"
#include "sexagra.h"
using namespace std;
int main()
{
int c;
cout<<"Cuántos vectores: ";cin>>c;
double md[c],a[c],r;
double g[c],m[c],s[c];
double v[c][2], vr1=0,vr2=0;
for(int i=0;i<c;i++){
cout<<"Dame el módulo del vector: ";cin>>md[i];
cout<<"Dame el argumento del vector: grados, minutos ,segundos: ";cin>>g[i]>>m[i]>>s[i];
SexagRad ang(g[i],m[i],s[i]);
a[i]=ang.gra2sexa();
PolarRect objeto(md[i], a[i]);
v[i][1]=objeto.primcomp();
v[i][2]=objeto.segucomp();
cout<<"La primera componente es "<<v[i][1]<<endl;
cout<<"La segunda componente es "<<v[i][2]<<endl;
}
for (int i=0;i<c;i++){
vr1=vr1+v[i][1];
}
for (int i=0;i<c;i++){
vr2=vr2+v[i][2];
}
r=atan(vr2/vr1);
cout<<"Las componentes de la suma de los vectores son: "<<vr1<<" y "
<<vr2<<endl;
cout<<"El módulo de la resultante es "<<sqrt(vr1*vr1+vr2*vr2)<<endl;
RadSexag1 angr(r);
cout<<"Su argumento "<<angr.rad2gra1()<<" grados "<<angr.rad2gra2()<<" minutos "<<angr.rad2gra3()<<" segundos"<<endl;
return 0;
}

No hay comentarios:

Publicar un comentario