Algoritmos de Derivadas e Integrales - Pract07c
Algoritmos de Derivadas e Integrales - Pract07c
Algoritmos de Derivadas e Integrales - Pract07c
Pg. 1
NDICE
NDICE ........................................................................................................................................1 1. Introduccin. .....................................................................................................................1 1.1 Ejercicio 1: Un programa para un Primo....................................................................1 1.2 Ejercicio 2: Calculo de la integral definida de un Polinomio de grado N ..................1 1.3 Ejercicio 3: Clculo de la Derivada de un Polinomio en un Pto. dado (x).................2 1.4 Ejercicio 4: Comparacin de Algoritmos de ordenacin............................................3 1.5 Ejercicio 5: Algoritmo de ordenacin de cadenas por Insercin................................3
1. Introduccin.
Continuamos con la preparacin para la prctica calificada. Debes realizar t solo los ejercicios. Recuerda que primero debes pensar en la forma de hacer el algoritmo, luego lo traduces al lenguaje de programacin C++. 1.1 Ejercicio 1: Un programa para un Primo El siguiente ejercicio consiste en obtener todos los nmeros primos entre dos nmeros A y B dados por el usuario. Recuerda que debes hacer una funcin Permutar que permita intercambiar los valores A y B en el caso en que A no sea menor que B. Por si no lo recuerdas, un nmero primo es aquel que slo es divisible por s mismo y por la unidad. Puedes usar el operador resto (%) para este algoritmo. Adems de la funcin Permutar, debes hacer la funcin Primos que reciba 3 argumentos: A y B y un puntero a un entero para recibir la cantidad de nmeros primos calculados; y que devuelva adems un vector donde se encuentren los #s primos calculados. El prototipo de la funcin puede ser as: int *Primos( int A, int B, int *num); Dentro de esta funcin debes hacer dos bucles, uno primero para calcular la cantidad de #s primos que hay en el intervalo entre A y B (para poder reservar memoria para el vector) y el otro para poner los datos en el vector. Finalmente, debes hacer una funcin Print que permita imprimir los #s primos calculados. Esta funcin debe tener dos argumentos: el vector y el numero de datos. Ayudas: En main debes crear una variable puntero a int ( int *vec) para recibir el vector que va a devolver la funcin Primos. No olvides tambin en main() liberar la memoria asignada en la funcin Primos. Debes crear un proyecto Ejer1 y el fichero Primo.cpp para el cdigo. 1.2 Ejercicio 2: Calculo de la integral definida de un Polinomio de grado N Este ejercicio consiste en la realizacin de un pequeo algoritmo matemtico para el clculo de la integral definida de un polinomio entre dos puntos (A y B) dados. El polinomio debe ser de cualquier grado:
Polinomio = a 0 + a1 X 1 + a 2 X 2 + a 3 X 3 + ... + a n X n
Pasos: 1. Debes pedir el grado del polinomio.
Informtica II Fundamentos de Programacin - Tecnun
Pg. 2
2. Crear un array de tipo double para albergar el polinomio (utilizar new). 3. Pedir los coeficientes del polinomio. 4. Pedir los puntos A y B para evaluar la integral (A < B). 5. Pedir el nmero de subintervalos n. 6. Sacar el valor de la integral por consola. El algoritmo se basa en la divisin del intervalo (A, B de la figura ) en n subintervalos, sumando las reas de stos. Si los subintervalos son lo suficientemente pequeos el rea de cada subintervalo se puede aproximar al rea de un trapecio (ver figura). En definitiva, la integral se puede aproximar como:
f ( x)
( f ( xi ) + f ( xi +1 ) * ( xi +1 xi ) 2
Para hacer este ejercicio debes crear el proyecto Ejer2 y el fichero Integral.cpp para escribir el cdigo. Recuerda que primero debes pensar en la forma de hacer el algoritmo, luego lo escribes en C++.
Xi
Xi+1
1.3 Ejercicio 3: Clculo de la Derivada de un Polinomio en un Pto. dado (x). En este ejercicio vamos a desarrollar un algoritmo para calcular la derivada de un polinomio de grado n, dado por el usuario. La frmula para calcular la derivada es la siguiente:
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. Para hacer este ejercicio debes crear el proyecto Ejer3 y el fichero Derivada.cpp para escribir el cdigo.
Informtica II Fundamentos de Programacin - Tecnun
Pg. 3
1.4 Ejercicio 4: Comparacin de Algoritmos de ordenacin En este ejercicio debes hacer un programa que permita comparar los tiempos de los algoritmos de ordenacin vistos en clase (Insercin y Burbuja). Copia el siguiente cdigo y estdialo.
#include <iostream.h> #include <stdlib.h> #include <time.h> void Insercion( int *dat , int n); void Burbuja(int *d, int n); inline void genera(int *datos, int n){ for (int i=0;i<n;i++) datos[i] = rand(); } void main() { long st,end; int n=10000; int *datos = new int[n]; // Burbuja cout << "Burbuja: \n"; genera(datos,n); st = clock(); Burbuja(datos,n); end = clock(); cout << "Tpo: " << (end-st)/1000.0 << endl; //Insercion cout << "Insercion: \n"; genera(datos,n); st = clock(); Insercion(datos,n); end = clock(); cout << "Tpo: " << (end-st)/1000.0 << endl; } void Insercion( int *a , int n){ int k,x; for (int i=1;i<n;i++){ x = a[i]; k = i-1; while( k>=0 && x<a[k]){ //k=-1 ext. izq. a[k+1] = a[k]; //si x es < a[k] k--; } a[k+1] = x; } } void Burbuja(int *d, int n){ for (int i=0;i<n-1;i++){ for (int j=i+1;j<n;j++){ if ( d[i] > d[j] ) { int tmp = d[i]; d[i] = d[j]; d[j] = tmp; } } } }
La funcin clock() (declarada en time.h) devuelve el nmero de milisegundos transcurridos desde la ltima vez que se ha llamado, por lo cual la resta la dividimos por 1000.0 para tener los segundos transcurridos. 1.5 Ejercicio 5: Algoritmo de ordenacin de cadenas por Insercin Partiendo del algoritmo del ejercicio anterior, se pide que realices un algoritmo para ordenar cadenas de caracteres. Puedes utilizar el cdigo de las prcticas anteriores.
Informtica II Fundamentos de Programacin - Tecnun