Está en la página 1de 4

Practica N6 Programacin en C++

Pg. 1

NDICE
NDICE ........................................................................................................................................1
1. Introduccin. .....................................................................................................................1
1.1
Ejercicio 4: Ordenar Palabras .....................................................................................1
1.2
Ejercicio 2: Mi Primer Algoritmo ..............................................................................2
1.3
Ejercicio 3: Desarrollo en serie de ex..........................................................................3
1.4
Ejercicio 4: Evaluacin de un Polinomio en un punto dado (x).................................3

1. Introduccin.
Esta prctica es una preparacin para la prctica calificada, lo cual significa que debe
realizar Ud. sol@ los ejercicios. Recuerde que primero debe pensar en la forma de hacer el
algoritmo, luego lo traduce al lenguaje de programacin C++.
1.1 Ejercicio 1: Ordenar Palabras
Vamos a hacer un ejercicio que permita introducir al usuario un nmero determinado de
palabras y el resultado ser sacarlas por consola ordenadas de forma descendente. Para ello
vamos a utilizar la funcin strcmp(char*, char*) de la librera estndar del C++ que permite
comparar dos cadenas de caracteres. Dicha funcin est declarada en el fichero string.h.
Vamos a utilizar las funciones con paso de punteros en los argumentos.
Crea un nuevo proyecto Ejer1 y el fichero Ordena.cpp, en el cual va a escribir el
siguiente cdigo:
#include <iostream.h>
#include <string.h>
void Ordena(char **, int);
void ImprimePalabras(char **, int);
char** ReservayPide(int);
void Libera( char **, int);
void main(void)
{
char **palabras;
int num;
cout << "Numero de palabras:";
cin >> num;
palabras = ReservayPide(num);
cout << "Palabras Introducidas: " << endl;
ImprimePalabras(palabras,num);
Ordena(palabras,num);
cout << "Palabras Ordenadas: " << endl;
ImprimePalabras(palabras,num);
Libera(palabras,num);
//liberar
}
char** ReservayPide(int num)
{
char tmp[120];
char **words;
words = new char*[num];
for (int i=0;i<num;i++){
cout << "Introduce la " << i+1 << " palabra:";
cin >> tmp;
int len=strlen(tmp);
words[i] = new char[len+1];
//para el '\0'
strcpy( words[i], tmp);
}
return words; //devuelve matriz
}

Informtica II Fundamentos de Programacin - Tecnun

Practica N6 Programacin en C++

Pg. 2

void Ordena(char **words, int num)


{
for (int i=0;i<num-1;i++){
for (int j=i+1;j<num;j++){
if ( strcmp( words[i], words[j]) < 0) {
char *tmp;
//intercambiar punteros
tmp=words[i];
words[i]=words[j];
words[j]=tmp;
}
}
}
}
void ImprimePalabras(char ** words, int Num)
{
for (int i=0;i<Num;i++){
cout << "\t" << words[i] << endl;
}
}
void Libera( char **words, int Num)
{
for (int i=0;i<Num;i++) delete [] words[i];
delete [] words;
}

Como puede ver, aprovechamos las ventajas de las funciones para darle mudularidad a
nuestro ejercicio, con lo cual logramos que la funcin principal main() tenga poco cdigo,
slo incluye las llamadas a las funciones.
Hemos creado 4 funciones:
1. Funcin char** ReservayPide(int num): Esta funcin reserva memoria para
almacenar las cadenas y pide al mismo tiempo los datos de cada palabra. Devuelve el
vector de cadenas.
2. Funcin Ordena(char **, int): Esta funcin se encarga de ordenar de forma
descendente las palabras que hay en el vector de cadenas. Para ello utiliza la funcin
strcmp(...). Note que si hay que cambiar las palabras, slo se intercambian los
punteros. Es conveniente que vea detenidamente con el debugger esta funcin.
3. Funcion Imprime(char **, int): Se encarga de imprimir a la consola las cadenas que
hay en el vector.
4. Funcin Libera(char **, int): Su trabajo es liberar la memoria utilizada.
1.2 Ejercicio 2: Mi Primer Algoritmo
Este ejercicio consiste en calcular el valor del Seno de un ngulo X, cuyo desarrollo en series
es:

x3 x5 x7
sen( x ) = x
+

+ ...
3! 5! 7!

(x en radianes)

Este ejercicio lo debe desarrollar de dos formas:


1. Debe Ud. hacer una funcin Seno1 que reciba como argumentos el ngulo, el
vector y el nmero de iteraciones y tiene que devolver el valor de la serie como
double. En el vector debe devolver todos los valores de la iteraciones que ha
realizado y sacarlos por la consola. La declaracin de dicha funcin puede ser de la
siguiente manera.
Informtica II Fundamentos de Programacin - Tecnun

Practica N6 Programacin en C++

Pg. 3

double Seno1( double x, double *v, int N=10 )

2. Debe hacer otra funcin Seno2 que reciba como argumentos el ngulo, el error
entre una iteracin y otra y un puntero a una variable entera para que devuelva el
nmero de iteraciones empleadas. La declaracin de esta funcin puede ser de la
siguiente manera:
double Seno2( double x, double error, int *num)

Para probar las funciones puede llamarlas desde main(), pidiendo al usuario que elija
el modo de calcular el seno, segn lo cual pedir los datos correspondientes. Debe crear un
proyecto Ejer2 y el fichero FuncSeno.cpp para escribir en el cdigo.
1.3 Ejercicio 3: Desarrollo en serie de ex
Al igual que el ejercicio anterior, debe hallar el valor de la funcin ex , utilizando los dos
criterios de terminacin:
1. Por nmero de iteraciones.
2. Por error entre una iteracin y otra.
El desarrollo en series de ex es:

x x2 x3 x4
e = 1+ +
+
+
+ ...
1! 2! 3! 4!
x

Recuerde que en el caso del criterio de terminacin N2 debe devolver y sacar por la
consola el nmero de iteraciones empleadas para el clculo.
Puede usar la funcin exp(x), definida en math.h, de la librera estndar del C++, para
contrastar los resultados.
Debe crear un proyecto Ejer3 y el fichero FuncExp.cpp para escribir el cdigo.
1.4 Ejercicio 4: Evaluacin de un Polinomio en un punto dado (x)
Este ejercicio contiene conceptos de algortmica y de matemticas. 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;
A continuacin debe pedir el grado del polinomio y reservar memoria para el array de
coeficientes (utilizando el operador new). Luego, a travs 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. Tambin debe sacar por la consola el
polinomio que ha evaluado.
Por si le ayuda a ver de forma ms clara el algoritmo, le doy la siguiente frmula para
la evaluacin del punto:
n

f ( x) = coeficientei * X i
i =0

Informtica II Fundamentos de Programacin - Tecnun

Practica N6 Programacin en C++

Pg. 4

A continuacin le doy lo que podra 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 + 3.5*X^1
polinomio en el punto 2.0 es 9.5

Para hacer este ejercicio debe crear el proyecto Ejer4 y el fichero Polinomio.cpp para
escribir el cdigo. Recuerde que primero debe pensar en la forma de hacer el algoritmo, luego
lo escribe en C++.
Como ejercicio adicional, si ha llegado a terminar la prctica, debe tratar de hacer una
funcin que se llama EvaluaPolinomio donde se le pasen 3 argumentos:
1. Un array con los coeficientes.
2. El punto x.
3. El nmero de coeficientes del array.
Esta funcin debe devolver el valor (como double) del polinomio evaluado en
dicho punto. A continuacin se puede ver la declaracin de dicha funcin:
double EvaluaPolinomio( double *coef, double x, int num)

Informtica II Fundamentos de Programacin - Tecnun

También podría gustarte