Prácticas de C++ Practica Nº 4 Fundamentos de Programación Informática II Prof. Dr. Paul Bustamante Practica Nº 4 Programación en C++ Pág. 1 ÍNDICE ÍNDICE ........................................................................................................................................ 1 1. Introducción...................................................................................................................... 1 1.1 Números Perfectos. .................................................................................................... 1 1.1.1 Opción 1:............................................................................................................ 1 1.1.2 Opción 2:............................................................................................................ 1 1.2 Conversor de Decimales - Hexadecimales................................................................. 2 1.3 Cálculo de la Derivada de un Polinomio en un Punto dado (x). ................................ 2 1.4 Cálculo de las distancias entre puntos........................................................................ 3 1. Introducción. Como ya lo hemos venido haciendo, algunos ejercicios de esta práctica los debe realizarlo solo, con el fin de que pueda ganar más experiencia en la programación en C++. En otros ejercicios se dará el código, lo que no significa que sólo tenga que escribirlo en el ordenador; debe tratar de realizarlos por su cuenta. 1.1 Números Perfectos. 1.1.1 Opción 1: En este ejercicio el programa debe decir si un número dado por pantalla es Perfecto o NO. Un número es perfecto cuando es igual a la mitad de la suma de todos sus divisores enteros, incluido él mismo y la unidad. Por ejemplo: 28 = 1 + 2 + 4 + 7 + 14 + 28 2 Los pasos a seguir son los siguientes: • Pedir el número por teclado. • Imprimir en la consola si el número es perfecto o no. • Continuar pidiendo hasta que se de la opción de salir. Nota: recuerde que puede usar el operador % para calcular el resto de una división, y así encontrar los divisores de un número. Para resolver este ejercicio, debe hacer la función bool Perfecto( int n), la cual debe devolver verdadero o falso, si el número pasado como argumento es o no perfecto. 1.1.2 Opción 2: En este apartado el programa debe pedir dos límites (A y B) y debe encontrar los números perfectos que existan entre esos dos límites. Por ejemplo si doy entre 20 y 250, debe encontrar el 28 y …? Para resolver este ejercicio debe usar la función Perfecto que ha implementado en la opción anterior. Debe hacer un bucle (con un For o While) desde el número A hasta el número B, incrementándolo de uno en uno, y por medio de la función Perfecto verificar si ese número es o no perfecto. Copyright@ Paul Bustamante – Tecnun (Universidad de Navarra) Practica Nº 4 Programación en C++ Pág. 2 1.2 Conversor de Decimales - Hexadecimales En este ejercicio se pide realizar un programa que permita convertir un número decimal, introducido por el usuario, a hexadecimal y viceversa. Para esto es necesario crear un pequeño menú con las dos opciones de conversión para que el usuario pueda escoger entre éstas y posteriormente, introducir el número a transformar. Las dos funciones que debe crear para este ejercicio son: void DecToHex(char *val, int n); void HexToDec( char *numHex, int &num); A continuación se le da la estructura del programa, incluyendo el llamado a las funciones respectivas: #include <iostream.h> #include <string.h> #include <math.h> //para strlen() //para pow() void DecToHex(char *val, int n); void HexToDec( char *numHex, int &num); void main() { int num,opc; char Hex[40]; cout << "1. Dec->Hex 2. cin >> opc; if (opc==1){ cout << "Dar Numero cin >> num; DecToHex(Hex,num); cout << num << " en }else{ cout << "Dar Numero cin >> Hex; HexToDec(Hex,num); cout << Hex << " en } } Hex->Dec ?"; en Dec:?"; Hex es " << Hex << endl; en Hex(mayusculas):?"; Dec es " << num << endl; 1.3 Cálculo de la Derivada de un Polinomio en un Punto dado (x). En este ejercicio se pide desarrollar un algoritmo para calcular la derivada de un polinomio de grado n, dado por el usuario. La fórmula para calcular la derivada es la siguiente: n f ( x) = ∑ coeficient esi * I * X i−1 ' i =1 El programa debe pedir: 1) El grado del polinomio (n). 2) Los coeficientes. 3) El punto x en el cual se quiere evaluar la derivada. Debe sacar por la consola el valor de la derivada en ese punto dado. Copyright@ Paul Bustamante – Tecnun (Universidad de Navarra) Practica Nº 4 Programación en C++ Pág. 3 #include <iostream.h> #include <math.h> //declaración de la función double CalculaDerivada(double *coefientes, int grade, double pto); void main () { int grado; double x, derivada; //introducción del grado del polinomio cout << "Introduzca el grado del polinomio: "; cin >> grado; double *coefs=new double[grado+1]; //asignación dinámica de memoria //introducción de los coeficientes for (int i=0;i<=grado;i++) { cout << "Coeficiente para X^" << grado-i << " : " << endl; cin >> coefs[i]; } //introducción del punto de evaluación cout << "Introduzca el punto para evaluar la derivada: " << endl; cin >> x; //llamada a la función CalculaDerivada() derivada = CalculaDerivada(coefs, grado, x); //saca el resultado por consola cout << "El valor de la derivada es : " << derivada << endl; delete [] coefs; } //definición de la función CalculaDerivada() double CalculaDerivada(double *coeficientes, int grade, double pto) { double resultado=0; //cálculo de la derivada. Implementar el algoritmo return resultado; } 1.4 Cálculo de las distancias entre puntos. El objetivo de este ejercicio es el de calcular las distancias entre varios puntos de un plano cartesiano x e y (dados por el usuario) y al final imprimir los dos puntos que están más cercanos, con la distancia que les separa. Para esto, el usuario debe introducir el total de puntos de trabajo, y luego cada uno de éstos. Finalmente, se deberá imprimir en la consola la distancia que hay entre cada uno de los puntos y además, cuáles son los que se encuentran más cercanos entre sí. Su distancia de separación también deberá sacarse por consola. La fórmula para hallar la distancia entre dos puntos es: ( x2 − x1 ) 2 − ( y 2 − y1 ) 2 Nota: Recuerde borrar los ficheros que estén en los subdirectorios \debug y \release del proyecto, para que libere espacio en su disco G\. Copyright@ Paul Bustamante – Tecnun (Universidad de Navarra)