Prácticas de C++ Practica Nº 8 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Practica Nº8 Programación en C++ Pág. 1 ÍNDICE ÍNDICE ........................................................................................................................................ 1 1. Introducción...................................................................................................................... 1 1.1 Ejercicio 1: Cálculo de ex por desarrollo en series..................................................... 1 1.2 Ejercicio 2: Evaluación de un Polinomio en un punto dado (x)................................. 1 1.3 Ejercicio 3: Algoritmo de ordenación por inserción .................................................. 2 1. Introducción. Esta práctica es una preparación para la práctica calificada. Debe realizar Ud. solo los ejercicios. Recuerde que primero debe pensar en la forma de hacer el algoritmo, luego lo traduce al lenguaje de programación C++. En el ejercicio 3 se le da el pseudocódigo para que lo implemente en C++. x 1.1 Ejercicio 1: Cálculo de e por desarrollo en series Este ejercicio consiste en calcular el valor de la función ex, cuyo desarrollo en series es: x x2 x3 x4 e = 1+ + + + + ... 1! 2! 3! 4! x Este ejercicio lo debe desarrollar en dos partes: 1. Debe hacer una función miExp que reciba como argumentos el valor de x y el número de iteraciones y tiene que devolver el valor de la serie como double. La declaración de dicha función puede ser de la siguiente manera. double miExp( double x, int N ) 2. Debe hacer otra función miExp que reciba como argumentos el valor de x, el error entre una iteración y otra y una referencia a una variable entera para que devuelva el número de iteraciones empleadas. La declaración de esta función puede ser de la siguiente manera: double miExp( double x, double error, int &num) Las funciones deben ser llamarlas desde main(), con los argumentos adecuados. Debe crear un proyecto Ejer1 y el fichero FuncExp.cpp para escribir en el código. Puede usar la función exp(x), definida en math.h, de la librería estándar del C++, para contrastar los resultados. Debe crear un proyecto Ejer1 y el fichero FuncExp.cpp para escribir el código. 1.2 Ejercicio 2: Evaluación de un Polinomio en un punto dado (x) Este ejercicio contiene conceptos de algorítmica y de matemáticas. En él deberá hacer un algoritmo para evaluar un polinomio de cualquier grado: Polinomio = a 0 + a1 X 1 + a 2 X 2 + a 3 X 3 + ... + a n X n Como en un principio no se sabe de qué grado va a ser este polinomio, debe crear una variable puntero del tipo double: double *coeficientes; Practica Nº8 Programación en C++ Pág. 2 A continuación debe pedir el grado del polinomio y reservar memoria para el vector de coeficientes (utilizando el operador new). Luego, a través de un bucle empezará a pedir los coeficientes del polinomio. Finalmente debe pedir el punto (x) en el que se va a evaluar el polinomio, cuyo resultado sacará por la consola. También debe sacar por la consola el polinomio que ha evaluado. Por si le ayuda a ver de forma más clara el algoritmo, se le da la siguiente fórmula para la evaluación del punto: n f ( x) = ∑ coeficientei * X i i =0 A continuación se da lo que podría ser la entrada y salida de datos por la consola: >> >> >> >> >> >> Introduce el Introduce el Introduce el Introduce el El polinomio El valor del numero de coeficientes: 2 coeficiente 1: 2.5 coeficiente 2: 3.5 valor de x: 2.0 es: 2.5*X^0 + 3.5*X^1 polinomio en el punto 2.0 es 9.5 Para hacer este ejercicio debe crear el proyecto Ejer2 y el fichero Polinomio.cpp para escribir el código. Recuerde que primero debe pensar en la forma de hacer el algoritmo, luego lo escribe en C++. 1.3 Ejercicio 3: Algoritmo de ordenación por inserción Hasta ahora para ordenar se ha empleado siempre el algoritmo de la burbuja, el cual realiza NxN iteraciones. Existe un algoritmo que es más rápido que el de la burbuja y es sencillo de implementar: el algoritmo de ordenación por inserción. Para la realización de este ejercicio debe crear un nuevo proyecto Ejer3 y el fichero OrdenaInser.cpp. Se le va a dar el algoritmo en pseudocódigo así como una breve explicación de lo que debe hacer. Ud. se encargará de traducirlo al C++. Este algoritmo de ordenación lo vamos a realizar en una función FuncOrdena que recibirá 2 argumentos: el array de los números y el número de elementos que hay en dicho array. El algoritmo en pseudocódigo es el siguiente: Function FuncOrdena ( "a" array , "n" número de elementos) i=1 while(i<=n) do[ x = a[i] insertar x en la posición correcta entre a0 y ai ] End function A continuación le doy una breve explicación del algoritmo de ordenación por inserción: "Inicialmente se ordenan los 2 primeros elementos, luego se inserta el tercero en la posición correcta con respecto a los 2 primeros que ya están ordenados, después el cuarto elemento se inserta en la posición adecuada con respecto a los tres primeros elementos ya ordenados y así sucesivamente hasta el final." Practica Nº8 Programación en C++ Pág. 3 12 4 5 20 8 2 4 12 5 20 8 2 4 5 12 20 8 2 4 5 12 20 8 2 4 5 8 12 20 2 Desde main() puede generar de forma aleatoria los números e introducirlos en el vector. Luego debe llamar a la función FuncOrdena para que los ordene. Finalmente puede imprimir el vector desde main() para que vea que lo ha hecho correctamente. A continuación se da un esqueleto de lo que podría ser el programa. La función de ordenar la debe implementar: #include <iostream.h> #include <stdlib.h> void FuncOrdena( int *dat , int n); void main() { int n; //pedir n int *datos = new int[n]; //Insercion cout << "Ordena por Insercion: \n"; for (int i=0;i<n;i++) datos[i] = rand() //Llama a la Funcion FuncOrdena FuncOrdena(datos,n); //Imprimir el resultado } void FuncOrdena( int *a , int n) { //... Poner aquí el código de ordenar }