Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curs05 06/pract12c++ PDF
Curs05 06/pract12c++ PDF
Pg. 1
Prcticas de C++
Practica N 12
Informtica II
Fundamentos de Programacin
Prof. Dr. Paul Bustamante
Pg. 1
INDICE
NDICE ................................................................................................................................................ 1
1.1
Ejercicio 1: Empresa Videojuegos..................................................................................... 1
1.2
Ejercicio 2: Clase Regresin .............................................................................................. 3
Antes de empezar a desarrollar los ejercicios del examen, es conveniente que revises que tienes
creado tu disco G:\. En l vas a poner todos los ejercicios. Lee atentamente las indicaciones del
ejercicio y debes hacer los programas conforme se te indica en este cuadernillo, es decir, si te dicen
que desarrolles el programa con 3 funciones, debes hacerlo as; si dice que las variables de las
clases deben ser privadas, as debes declararlas.
1.1 Ejercicio 1: Empresa Videojuegos
Para empezar a hacer este ejercicio, crea el Proyecto Juegos en tu disco G:\ y en l crea el fichero
juegos.cpp, que es donde vas a escribir el cdigo del ejercicio. A continuacin se te explica lo que
se pretende conseguir con este ejercicio:
Una empresa de videojuegos te ha seleccionado para que implementes un nuevo algoritmo
que ser vendido en una nueva consola.
El juego consiste en lo siguiente:
1. El programa debe generar al inicio un nmero aleatorio de 5 cifras. Para jugar, debe
pedirle al usuario que introduzca un nmero tambin de 5 cifras, el cual va a comparar
con el nmero generado por el ordenador y decirle al usuario los dgitos que ha acertado
y luego los dgitos que estn en la posicin correcta y aumentar una variable que es el
nmero de intentos. Por ejemplo, si el nmero generado es 21456 y el usuario introduce
32357, el programa le dir que ha acertado con los dgitos 2 y 5 pero que el nico que
est en la posicin correcta es el 5. Si ya ha acertado todos, debe sacar un aviso por la
consola diciendo que ha adivinado el nmero y en cuntos intentos.
2. Adems, el juego tendr otra opcin que es la de ver cmo va el juego. En esta opcin le
sacar por la consola el nmero pero slo los dgitos que va adivinando, el resto le
aparecer con una X. Siguiendo con nuestro ejemplo, aparecer: XXX5X, lo cual le da
cierta ventaja para no volver a introducir otro nmero en esa posicin. Tambin
aparecer el nmero de intentos que lleva acumulado.
A continuacin, una vez descrito el algoritmo del juego, te voy a describir las funciones y variables
del programa.
a. Variables: Debes usar dos arrays, uno para los dgitos y otro para ir marcando con 0 o
1 en la posicin del dgito que ya ha sido adivinado. Adems necesitas otra variable para
ir registrando los intentos realizados.
b. Funciones: a stas se accede a travs del Men.
i. Tiene que haber una funcin Menu() que devuelva la opcin elegida por el usuario. El
men tendr 4 opciones: 1-Jugar 2-Ver 3-Generar 4-Salir.
ii. Funcin Jugar(..): permite hacer un intento del juego.
iii. Funcin Generar(..): permite generar un nuevo nmero aleatorio y poner la variable de
intentos a cero y lo que se crea conveniente.
iv. Funcin Ver(..): permite ver cmo va el juego (segn la descripcin anterior).
El esqueleto del programa principal se muestra a continuacin:
Informtica II Fundamentos de Programacin - Tecnun
Pg. 2
while(true){
int ret=Menu();
switch(ret){
case 1: Jugar(. . .); break;
case 2: Ver(. . .); break;
case 3: Genera(. . .); break;
case 4: return;
}
}
Los argumentos de las funciones quedan a criterio del alumno. Para convertir un nmero entero en
una cadena de caracteres se usa la funcin itoa(num,array,10) que se encuentra definida en
stdlib.h, donde num es la variable entera a convertir y array es el vector tipo char que recibir la
conversin, el 10 es la base.
En las siguientes figuras se muestran las salidas por consola para clarificar mejor el ejercicio.
Pg. 3
V=a*T+b
Figura 1
La opcin 2 permite ver tanto los datos introducidos (Temperatura y Ventas) como la ecuacin de la
recta ya calculada (ver Figura 3).
Figura 3
La opcin 3 servir para hacer un nuevo clculo de Ventas, dada una Temperatura, usando la
ecuacin de la recta ya calculada por el mtodo de regresin lineal (ver Figura 4).
Informtica II Fundamentos de Programacin - Tecnun
Pg. 4
Figura 4
La opcin 4 permite calcular el ndice de Correlacin, el cual nos da una medida de la dispersin
de los datos. El coeficiente de correlacin puede valer cualquier nmero comprendido entre -1 y +1.
Cuando r=1, la correlacin lineal es perfecta, directa.
Cuando r=-1, la correlacin lineal es perfecta, inversa
Cuando r=0, no existe correlacin alguna, independencia total de los valores X e Y.
Figura 5
a=
N TiVi Ti Vi
b=
N Ti 2 ( Ti )
a Ti
N
r=
(T T )* (V V )
( (T T ) )* ( (V V ) )
i
Pg. 5
Para realizar este programa se debe implementar todo en una sola clase, la clase Regresion, la cual
debe contener los mtodos de PedirDatos, VerDatos, Lineal, Correlacin y CalculaV, que
permitirn desde main, de una forma fcil, hacer los clculos necesarios.
La definicin de la clase es la siguiente:
class Regresion {
double *t;
//para almacenar Temperaturas
double *v;
//para almacenar Ventas
int n;
//nmero de datos
double m, b;
//pendiente y ordenada en el origen
private:
void Lineal();
public:
Regresion();
~Regresion();
void PideDatos();
double Correlacion();
void VerDatos();
double CalculaV();
};
Los datos de Temperatura y Ventas se deben almacenar en los vectores t y v, para lo cual estn las
variables double *t y double *v. Se debe hacer reserva dinmica de memoria, para lo cual se usar
el nmero total de datos, que se almacena en la variable n.
La funcin PideDatos se encargar de pedir los datos y almacenarlos en los vectores t y v (Fig. 2).
Esta funcin debe ser invocada desde la opcin 1 del men, por medio del objeto que se cree.
La funcin VerDatos permitir ver los datos introducidos y los valores de la recta (Figura 3). Esta
funcin debe ser invocada desde la opcin 2 del men, por medio del objeto que se cree.
La funcin CalculaV permitir calcular un nuevo valor de Ventas, dada una Tempertura, la cual se
pedir por teclado desde esta funcin (Figura 4). Esta funcin debe ser invocada desde la opcin 3
del men, por medio del objeto que se cree.
La funcin Correlacion permitir calcular el ndice de correlacin y mostrarlo en la pantalla (ver
Figura 5). Aqu se debe implementar el algoritmo de correlacin descrito antes. Esta funcin debe
ser invocada desde la opcin 4 del men, por medio del objeto que se cree.
La funcin Lineal permite calcular los parmetros de la recta (a y b). Aqu debe implementar el
algoritmo de la regresin lineal descrito ms arriba. Esta funcin slo ser llamada por las dems
funciones de la clase, segn sea necesario, por eso es privada.
La funcin main debe tener esta estructura:
void main() {
Regresion reg;
//crear 1 objeto de la clase Regresion
int opc=0;
while(1){
opc = Menu();
switch(opc){
case 1: reg.PideDatos(); break;
case 2: reg.VerDatos(); break;
case 3: cout << "Ventas es: " << reg.CalculaV() << endl; break;
case 4: cout<<"Correlacion es: " << reg.Correlacion() << endl; break;
case 5:
}
return;
//termina
}
}