TEMA CÁLCULO DE DISTANCIA ENTRE DOS PUNTOS

Texto completo

(1)

---TEMA 1--- ---CÁLCULO DE DISTANCIA ENTRE DOS PUNTOS--- // Este programa calcula la distancia entre dos puntos utilizando estrucutras

// main.cpp // Tarea 1 //

// Created by Alexis Mobayed on 1/19/16.

// Copyright © 2016 Alexis Mobayed. All rights reserved. // #include <iostream> #include <string> #include <cstdlib> #include <cmath> using namespace std; struct Punto{ int x; int y; };

int main(int argc, char* argv[]) { Punto pt1,pt2; double distancia; pt1.x = 10; pt1.y = 20; pt2.x = 13; pt2.y = 19; distancia=sqrt(pow((pt2.x-pt1.x),2)+pow((pt2.y-pt1.y),2)); cout <<distancia<<endl; return 0; }

---CÁLCULO DE DISTANCIA ENTRE DOS PUNTOS---

---UTILIZACIÓN DE FUNCIONES PARA RESOLUCIÓN DE PROBLEMAS---

// Este programa implementa funciones para la resolución de problemas específicos. Estas son:

• Suma de dos números

• Identificar el menor de dos números. • Calcular el promedio de tres números. • Calcular la potencia de un número. • Calcular la raíz cuadrada de un número. • Calcular la raíz cúbica de un número. • Calcular el valor trunco de un número. • Redondeo de un número.

• Cálculo del residuo de una división (módulo). • Cálculo del área de un rectángulo.

(2)

• Intercambio de los valores de variables. // main.cpp

// Tarea 2

// Created by Alexis Mobayed on 1/21/16.

// Copyright © 2016 Alexis Mobayed. All rights reserved. // #include <iostream> #include <string> #include <cmath> using namespace std; //prototipos de funciones float suma(float,float); float menor(float,float); float promedio(float,float,float); float potencia(float,float); float raizcuadrada(float); float raizcubica(float); float trunca(float); float redondea(float); float modulo(int,int); void rectangulo(float,float); void circulo(float); void intercambio(int,int); //principal

int main(int argc, const char * argv[]) { cout<<suma(3,2)<<endl; cout<<menor(3.2,43)<<endl; cout<<promedio(6,4,2)<<endl; cout<<potencia(2,3)<<endl; cout<<raizcuadrada(16)<<endl; cout<<raizcubica(8)<<endl; cout<<trunca(10.65)<<endl; cout<<redondea(7.4)<<endl; cout<<modulo(5,2)<<endl; rectangulo(4,2); circulo(4); intercambio(1,2); getchar(); }

float suma(float oper1,float oper2) {

float resultado=oper1+oper2; return resultado;

}

(3)

{ float resultado=0; if(num1<num2) resultado=num1; if(num2<num1) resultado=num2; return resultado; }

float promedio(float num1,float num2,float num3) {

float resultado=(num1+num2+num3)/3; return resultado;

}

float potencia(float base,float exponente) {

float resultado=pow(base,exponente); return resultado;

}

float raizcuadrada(float numero) {

float resultado=sqrt(numero); return resultado;

}

float raizcubica(float numero) {

float resultado=pow(numero,(float)1/3); return resultado;

}

float trunca(float numero) {

float resultado=numero-(int)numero; return resultado;

}

float redondea(float numero) {

float resultado=round(numero); return resultado;

}

float modulo(int divisor,int dividendo) {

float resultado=divisor%dividendo; return resultado;

}

void rectangulo(float base,float altura) {

(4)

float resultado=base*altura;

float perimetro=(2*base)+(2*altura);

cout<<"El perimetro es " <<perimetro<< " y el area es " <<resultado <<endl;

}

void circulo(float radio) {

float area=3.141592*pow(radio,2); float perimetro=3.141592*(radio*2);

cout<<"El perímetro es " <<perimetro<< " y el área es " <<area <<endl;

}

void intercambio(int a,int b) {

int c=a; int d=b; b=c; a=d;

cout<<"El valor original de A es "<<c<<" y de B es "<<d<< ". Los nuevos son " <<a<< " y "<<b<<endl;

}

---UTILIZACIÓN DE FUNCIONES PARA RESOLUCIÓN DE PROBLEMAS--- ---MANEJO DE MATRICES BIDIMENSIONALES --- // Este programa maneja matrices bidimensionales y permite ejecutar algunas funciones sobre ellas. Estas son:

• Obtener la transpuesta de la matriz.

• Obtener la suma de la diagonal principal de la matriz. • Obtener la suma de los renglones y columnas de la matriz. // Se utilizaron arreglos bidimensionales para su

implementación. // main.cpp // Matrices //

// Created by Alexis Mobayed on 2/2/16.

// Copyright © 2016 Alexis Mobayed. All rights reserved. // #include <iostream> using namespace std; int main() { int sumax=0; int sumay=0;

int arreglodos[4][4];//primero renglones y luego columnas for(int i=0;i<4;i++)

{

for(int j=0;j<4;j++) {

(5)

cin>>arreglodos[i][j]; }

}

cout <<endl;

cout<<"La matriz es: "<<endl; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { cout<<arreglodos[i][j]<<"\t"; } cout <<endl; } cout<<endl; int arreglotranspuesto[4][4]; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { arreglotranspuesto[i][j]=arreglodos[j][i]; } }

cout<<"La matriz transpuesta es:"<<endl; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { cout<<arreglotranspuesto[i][j]<<"\t"; } cout <<endl; } cout<<endl; int suma=0; for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { if (i==j) suma=suma+arreglodos[i][j]; } }

cout<<"La suma es: "<<suma<<endl; cout<<endl; int arreglotres[5][5]; for(int i=0;i<4;i++) { sumax=0; for(int j=0;j<4;j++) { sumax=sumax+arreglodos[i][j]; arreglotres[i][4]=sumax;

(6)

} } for(int j=0;j<4;j++) { sumay=0; for(int i=0;i<4;i++) { sumay=sumay+arreglodos[i][j]; arreglotres[4][j]=sumay; } } for(int i=0;i<4;i++) { for(int j=0;j<4;j++) { arreglotres[i][j]=arreglodos[i][j]; } } arreglotres[4][4]=suma;

cout<<"La matriz extendida es: "<<endl; for(int i=0;i<5;i++) { for(int j=0;j<5;j++) { cout<<arreglotres[i][j]<<"\t"; } cout <<endl; } cout<<endl; return 0; }

---MANEJO DE MATRICES BIDIMENSIONALES --- ---ORDENAMIENTO DE PUNTOS POR DISTANCIA --- // Este programa permite ordenar un arreglo de puntos de

acuerdo a su distancia al origen, de menor a mayor.

Adicionalmente el programa valida contra la repetición de puntos iguales. Se utilizaron headers para la implementación de este programa así como arreglos bidimensionales. Se presenta primero el main y en seguida el header correspondiente.

implementación. // main.cpp // Puntos

// Created by Alexis Mobayed on 2/9/16.

// Copyright © 2016 Alexis Mobayed. All rights reserved. //

#include <iostream> #include "Header.h" #define K 3

(7)

void pideValores(Punto arrp[], int elem); void muestraValores(Punto arrp[]);

void limpiaArr(Punto arrp[]); void dista(Punto arrp[]);

int main(int argc, const char * argv[]) { Punto arrPts[K]; limpiaArr(arrPts); int aux; do {

cout<<"A quién le asignamos valores?_ "; cin>>aux; if (aux>=K) continue; if (aux==-1) break; pideValores(arrPts,aux); } while (true); muestraValores(arrPts); dista(arrPts); }

void limpiaArr(Punto arrp[]) {

for(int i=0; i<K; i++) {

arrp[i].x=i; arrp[i].y=i; }

}

void muestraValores (Punto arrp[]) {

cout<<endl;

for(int i=0; i<K; i++) {

cout<<"("<<arrp[i].x<<","<<arrp[i].y<<")\t"<<endl; }

cout<<endl; }

void pideValores(Punto arrp[], int elem) {

cout<<"Indica valor de x:_ "; cin>>arrp[elem].x;

cout<<"Indica valor de y:_ "; cin>>arrp[elem].y;

int j=0; do {

if(arrp[elem].x==arrp[j].x && arrp[elem].y==arrp[j].y && elem!=j)

do {

(8)

otro: ";

cin>>arrp[elem].x;

cout<<"Valor repetido indica valor de y, indica otro: ";

cin>>arrp[elem].y;

} while (arrp[elem].x==arrp[j].x && arrp[elem].y==arrp[j].y);

j=j+1; if(j>=(K)) j=0;

} while (arrp[elem].x==arrp[j].x && arrp[elem].y==arrp[j].y);

}

void dista(Punto arrp[]) {

float lon[K]; int m,j; float aux;

for(int i=0; i<K; i++) { lon[i]=sqrt((arrp[i].x)*(arrp[i].x) + (arrp[i].y)*(arrp[i].y)); } for(j=0; j<(K-1); j++) { for(m=(j+1); m<(K); m++) { if(lon[j]>lon[m]) { aux=lon[j]; lon[j]=lon[m]; lon[m]=aux; } } } for(int p=0; p<(K); p++) { cout<<lon[p]<<endl; } } #ifndef puntoas_Header_h #define puntoas_Header_h #include <iostream> #include<math.h> using namespace std; struct Punto { int x,y;

(9)

float distaOrigen() { return sqrt(x*x+y*y); } float distentrepuntos(Punto ps) { return sqrt(pow((ps.x-x),2)+pow((ps.y-y),2)); } }; #endif

---ORDENAMIENTO DE PUNTOS POR DISTANCIA ---

Figure

Actualización...

Referencias

Actualización...

Related subjects :