---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.
• 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;
}
{ 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) {
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++) {
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;
} } 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
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 {
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;
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 ---