Está en la página 1de 6

Prctica 12 - Programacin en C++

Pg. 1

Prcticas de C++
Practica N 12

Informtica II
Fundamentos de Programacin
Prof. Dr. Paul Bustamante

Informtica II Fundamentos de Programacin - Tecnun

Prctica 12 - Programacin en C++

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

Practica 12 - Programacin en C++


void main()
{
char Numero[5];
//para almacenar el nmero
char Adivina[]={0,0,0,0,0}; //sirve para marcar los
//digitos adivinados
int Intentos=0;
//la primera vez genera el nmero
Genera(. . .);

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.

Fig.1 Men y Opcin 2 elegida: Ningn


dgito adivinado an y 0 intentos

Fig.2 Opcin 1 Jugar: hay 4 dgitos


adivinados y slo una en la posicin
correcta

Fig.3 Opcin 2: Vemos que hemos adivinado 1


dgito y llevamos 4 intentos

Informtica II Fundamentos de Programacin - Tecnun

Practica 12 - Programacin en C++

Pg. 3

1.2 Ejercicio 2: Clase Regresin


Ud. trabaja en una fbrica de bebidas refrescantes,
en la cual han observado que las ventas de dichas
bebidas dependen de la temperatura de la calle.
Dicha dependencia se puede aproximar a una recta,
cuya ecuacin es V = a*T + b, donde V son las
ventas, T es la temperatura, a es la pendiente de la
recta y b es el trmino independiente.

V=a*T+b

Le han pedido de la fbrica que haga un programa


T
para introducir los datos de temperatura y ventas y
que calcule la ecuacin de la recta (por el mtodo de
regresin lineal que se le dar ms adelante) y permita calcular las ventas dada una temperatura
determinada.
El programa debe tener un men con 5 opciones (ver Figura 1) y solo terminar con la opcin 5 de
salir.

Figura 1

La opcin 1 es para introducir los datos de


Temperatura y Ventas (ver Figura 2). Primero
se pedir el nmero de datos a introducir (N).
Hay que tener en cuenta que si al ver los datos
(con la opcin 2) veo que estn mal
introducidos, debo poder introducir de nuevos
los datos mediante la opcin 1, sin necesidad
de que vuelva a empezar el programa.
Figura 2

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

Practica 12 - Programacin en C++

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

Por ultimo, la opcin 5, permite Salir del programa.


Las ecuaciones para calcular la recta que se ajusta a dichos puntos por el mtodo de Regresin
Lineal son las siguientes (existen otros mtodos para ajustar los puntos a un polinomio, pero son
ms complicados, por lo que vamos a simplificar y tratar de aproximarlos a una recta):
V = a * T + b (Ec. de la recta que aproximar los puntos dados)

a=

N TiVi Ti Vi

b=

N Ti 2 ( Ti )

a Ti
N

Donde, T y V son vectores que contienes los datos de Temperatura y Ventas


respectivamente, y N es el nmero de elementos que hay en dichos vectores.
El ndice de Correlacin se calcula mediante la siguiente frmula:

r=

(T T )* (V V )
( (T T ) )* ( (V V ) )
i

Informtica II Fundamentos de Programacin - Tecnun

Practica 12 - Programacin en C++

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

}
}

Informtica II Fundamentos de Programacin - Tecnun

También podría gustarte