• No se han encontrado resultados

TEMA CÁLCULO DE DISTANCIA ENTRE DOS PUNTOS

N/A
N/A
Protected

Academic year: 2021

Share "TEMA CÁLCULO DE DISTANCIA ENTRE DOS PUNTOS"

Copied!
9
0
0

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 ---

Referencias

Documento similar

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

“La unificación de la clasificación de empresas otorgada por las CC.AA.”, “La unificación de criterios en la acreditación de los servicios de prevención de riesgos

You may wish to take a note of your Organisation ID, which, in addition to the organisation name, can be used to search for an organisation you will need to affiliate with when you

Where possible, the EU IG and more specifically the data fields and associated business rules present in Chapter 2 –Data elements for the electronic submission of information

The 'On-boarding of users to Substance, Product, Organisation and Referentials (SPOR) data services' document must be considered the reference guidance, as this document includes the

Products Management Services (PMS) - Implementation of International Organization for Standardization (ISO) standards for the identification of medicinal products (IDMP) in

This section provides guidance with examples on encoding medicinal product packaging information, together with the relationship between Pack Size, Package Item (container)

Según Gálvez (2003) motivar es despertar el interés y la atención de los alumnos por los valores contenidos en la materia, resaltando en ellos el deseo de aprendizaje