Acrobat Distiller, Job 8

Anuncio
Practica Nº7 Programación en C++
Pág. 1
ÍNDICE
ÍNDICE ........................................................................................................................................1
1. Introducción. .....................................................................................................................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: Cálculo de la Derivada de un Polinomio en un Pto. dado (x).................2
1.4
Ejercicio 4: Comparación de Algoritmos de ordenación............................................3
1.5
Ejercicio 5: Algoritmo de ordenación de cadenas por Inserción................................3
1. Introducción.
Continuamos con la preparación para la práctica 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 programación C++.
1.1 Ejercicio 1: Un programa para un Primo
El siguiente ejercicio consiste en obtener todos los números primos entre dos números A y B
dados por el usuario. Recuerda que debes hacer una función 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 número primo es aquel que sólo es divisible por sí mismo y
por la unidad. Puedes usar el operador resto (%) para este algoritmo.
Además de la función Permutar, debes hacer la función Primos que reciba 3
argumentos: A y B y un puntero a un entero para recibir la cantidad de números primos
calculados; y que devuelva además un vector donde se encuentren los #s primos calculados.
El prototipo de la función puede ser así:
int *Primos( int A, int B, int *num);
Dentro de esta función 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 función Print que permita imprimir los #s primos
calculados. Esta función 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 función Primos. No olvides también en main() liberar la memoria asignada
en la función Primos.
Debes crear un proyecto Ejer1 y el fichero Primo.cpp para el código.
1.2 Ejercicio 2: Calculo de la integral definida de un Polinomio de grado N
Este ejercicio consiste en la realización de un pequeño algoritmo matemático para el cálculo
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.
Informática II – Fundamentos de Programación - Tecnun
Practica Nº7 Programación en C++
Pág. 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 número de subintervalos “n”.
6. Sacar el valor de la integral por consola.
El algoritmo se basa en la división del intervalo (A, B de la figura ) en n subintervalos,
sumando las áreas de éstos. Si los subintervalos son lo suficientemente pequeños el área de
cada subintervalo se puede aproximar al área de un trapecio (ver figura).
En definitiva, la integral se puede aproximar como:
∫
B
A
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 código. Recuerda que primero debes pensar en la forma de hacer el algoritmo,
luego lo escribes en C++.
Xi
Xi+1
1.3 Ejercicio 3: Cálculo 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 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.
Para hacer este ejercicio debes crear el proyecto Ejer3 y el fichero Derivada.cpp para escribir
el código.
Informática II – Fundamentos de Programación - Tecnun
Practica Nº7 Programación en C++
Pág. 3
1.4 Ejercicio 4: Comparación de Algoritmos de ordenación
En este ejercicio debes hacer un programa que permita comparar los tiempos de los
algoritmos de ordenación vistos en clase (Inserción y Burbuja).
Copia el siguiente código y estúdialo.
#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 función clock() (declarada en time.h) devuelve el número 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 ordenación de cadenas por Inserción
Partiendo del algoritmo del ejercicio anterior, se pide que realices un algoritmo para
ordenar cadenas de caracteres. Puedes utilizar el código de las prácticas anteriores.
Informática II – Fundamentos de Programación - Tecnun
Descargar