Está en la página 1de 7

#include <iostream>

#include <stdlib.h>

#include<cmath>

using namespace std;

#define I 0

#define II 180

#define IV 360

void problemaDirecto(double x, double y, double distancia,double grados, double minutos, double


segundos);

void problemaInverso(double x, double y, double x1, double y1);

void convertirHexa(double azimut);

int main()

int op=0;

do

cout<<"CALCULO DE COORDENADAS"<<endl;

cout<<"1.-Problema Directo"<<endl;

cout<<"2.-Problema Inverso"<<endl;

cout<<"3.-Salir"<<endl;

double x,y,x1,y1;

double distancia,grados,minutos,segundos;
cout<<"Seleccione una opcion: "<<endl;

cin>>op;

switch(op)

case 1:

system("cls");

cout<<"Ingrese la coordenada en x: "<<endl;

cin>>x;

cout<<"Ingrese la coordenada en y: "<<endl;

cin>>y;

cout<<"Ingrese la distancia: "<<endl;

cin>>distancia;

cout<<"Ingrese los grados del azimut : "<<endl;

cin>>grados;

cout<<"Ingrese los minutos del azimut: "<<endl;

cin>>minutos;

cout<<"Ingrese los segundos del azimut: "<<endl;

cin>>segundos;

problemaDirecto( x, y, distancia,grados,minutos,segundos);

break;

case 2:

system("cls");

cout<<"Ingrese la coordenada del punto 1 en x: "<<endl;

cin>>x;

cout<<"Ingrese la coordenada del punto 1 en y: "<<endl;

cin>>y;
cout<<"Ingrese la coordenada del punto 2 en x: "<<endl;

cin>>x1;

cout<<"Ingrese la coordenada del punto 2 en y: "<<endl;

cin>>y1;

problemaInverso( x, y, x1, y1);

break;

case 3:

break;

}while(op!=3);

system("Pause");

return 0;

void problemaDirecto(double x, double y, double distancia, double grados,double minutos, double


segundos)

double angulo=(grados+((minutos+(segundos/60))/60));

cout<<endl;

double xR=x+(distancia*sin(angulo*(3.141592/180)));

cout<<endl;

cout<<"-----------------------------\n"<<endl;
printf("La coordenada x es: %lf",xR);

double yR=y+(distancia*cos(angulo*(3.141592/180)));

cout<<endl;

cout<<"-----------------------------\n"<<endl;

printf("La coordenada y es: %lf",yR);

cout<<endl;

cout<<"-----------------------------\n"<<endl;

system("Pause");

system("cls");

void problemaInverso(double x, double y, double x1, double y1)

int c;

double Az1,Az2,Az3,Az4;

double varX=x1-x;

double varY=y1-y;

double angulo=atan(varX/varY)*180/3.141592;

cout<<"El angulo es : "<<angulo<<endl;

if(varX>0 && varY>0){

cout<<"azimut="<<angulo<<endl;

else
{

if(varX>0 && varY<0){

c=180;

cout<<"azimut="<<angulo+c<<endl;

else

if(varX<0 && varY<0){

c=180;

cout<<"azimut="<<angulo+c<<endl;

else

if(varX<0 && varY>0){

c=360;

cout<<"azimut="<<angulo+c<<endl;

cout<<endl;

cout<<"********"<<endl;

angulo=angulo+c;

Az1=floor(angulo);

Az2=(angulo-Az1)*60;
Az3=floor(Az2);

Az4=(Az2-Az3)*60;

printf("Azimut:\n");

printf(" Grados: %.2f \n Minutos: %.2f \n Segundos: %.2f\n\n",Az1,Az3,Az4);

double a=pow((varX),2);

//cout<<a<<endl;

double b=pow((varY),2);

//cout<<b<<endl;

cout<<endl;

double distAB=sqrt(a+b);

printf("La distancia de AB es: %lf", distAB);

cout<<endl;

cout<<"********"<<endl;

cout<<endl;

system("Pause");

system("cls");

void convertirHexa(double azimut)

bool negativo=false;

//cout<<"\n\nEl azimut ingresado en decimal: "<<azimut<<endl;

if(azimut<0)

negativo=true;

azimut=azimut*-1;
}

int grado=azimut/1;

int minutos;

double decimal, segundos;

decimal=azimut-grado;

decimal=decimal*60;

minutos=decimal/1;

segundos=decimal-minutos;

cout<<endl;

cout<<"Grados\tMinutos\tSegundos "<<endl;

if(negativo) {cout<<"-"<<grado<<"\t"<<minutos<<"\t"<<segundos<<endl;}

else cout<<grado<<"\t"<<minutos<<"\t"<<segundos<<endl;

También podría gustarte