Prácticas de C++

Anuncio
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
}
Descargar