jueves, 17 de noviembre de 2016

TEMA 4: MODULARIDAD (MÚLTIPLOS)

Se proponía al estudiante la elaboración de un código para crear un juego basado en el calculo de números aleatorios cuyos límites establece el jugador, quien tiene que adivinar si el número calculado aleatoriamente es múltiplo de 2, de 3, de 5, o de ninguno (o de las combinaciones de estos).
A continuación se muestra el código de este programa:

#include <iostream>
#include <conio2.h>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
using namespace std;
bool multiplo2 (int aleatorio);
bool multiplo3 (int aleatorio);
bool multiplo5 (int aleatorio);
void intercambio (int & linf, int & lsup);
void informacion (void);
int respuestas (void);
void final (int fallos, int aciertos, int veces);
void comprueba (int & aciertos, int & fallos, int opcion, bool mult2, bool mult3, bool mult5);
int main()
{
srand(time(NULL));
char resp;
int linf, lsup, veces, aleatorio, aciertos, opcion, fallos;
bool mult2, mult3, mult5;
informacion();
cin>>resp;
while (resp=='s')
{
cout<<"Los numeros dados por el programa son aleatorios entre los limites que escojas."<<endl;
cout<<"Introduce el limite inferior: ";
cin>>linf;
cout<<"Introduce el limite superior: ";
cin>>lsup;
intercambio(linf, lsup);
cout<<"Introduce las veces que quieres jugar: ";
cin>>veces;
clrscr();
aciertos=0;
fallos=0;
for (int i=1; i<=veces; i++)
{
aleatorio=linf+rand()%(lsup+1-linf);
cout<<"RONDA NUMERO "<<i<<endl;
cout<<"El numero "<<aleatorio<<endl;
mult2=multiplo2 (aleatorio);
mult3=multiplo3 (aleatorio);
mult5=multiplo5 (aleatorio);
opcion=respuestas();
comprueba(aciertos,fallos,opcion,mult2,mult3, mult5);
}
cout<<"El numero de aciertos es: "<<aciertos<<endl;
cout<<"El numero de fallos es: "<<fallos<<endl;
final(fallos, aciertos, veces);
cout<<"¿Quieres seguir jugando?"<<endl;
cin>>resp;
while (resp!='s' && resp!='n')
{
cout<<"Error, elige una respuesta posible, solo 's' o 'n':"<<endl;
cin>>resp;
}
}
while (resp!='s' && resp!='n')
{
cout<<"Error, elige una respuesta posible, solo 's' o 'n':"<<endl;
cin>>resp;
}
while (resp=='n')
{
system("PAUSE");
return 0;
}
/*MODULOS MODULOS MODULOS MODULOS MODULOS MODULOS MODULOS*/
}
bool multiplo2 (int aleatorio)
{
bool mult2=false;
if (aleatorio%2==0)
{
mult2=true;
}
return mult2;
}
bool multiplo3 (int aleatorio)
{
bool mult3=false;
if (aleatorio%3==0)
{
mult3=true;
}
return mult3;
}
bool multiplo5 (int aleatorio)
{
bool mult5=false;
if (aleatorio%5==0)
{
mult5=true;
}
return mult5;
}
void informacion (void)
{
cout<<"Bienvenido al juego de los multiplos"<<endl;
cout<<"Acuerdate de que:"<<endl<<"Un numero es multiplo de 2 si acaba en 0 o cifra par."<<endl<<"Un numero es multiplo de 3 si la suma de sus cifras es multiplo de 3."<<endl<<"Un numero es multiplo de 5 si acaba en 0 o 5"<<endl;
cout<<"Se mostrara un numero y tendras que elegir la respuesta correcta"<<endl;
cout<<"¿Estas listo? s/n"<<endl;
}
int respuestas (void)
{
int respn;
cout<<"1- es multiplo de 2"<<endl<<"2- es multiplo de 3"<<endl<<"3- es multiplo de 5"<<endl;
cout<<"4- es multiplo de 2 y de 3"<<endl<<"5- es multiplo de 2 y de 5"<<endl<<"6- es multiplo de 3 y de 5"<<endl;
cout<<"7- es multiplo de 2, de 3, y de 5"<<endl<<"8- no es multiplo de ninguno"<<endl;
cout<<"Elige una respuesta (del 1 al 8) ";
cin>>respn;
return respn;
}
void comprueba (int & aciertos, int & fallos, int opcion, bool mult2, bool mult3, bool mult5)
{
switch (opcion)
{
case 1:
if (mult2==true && mult3==false && mult5==false)
{
aciertos=aciertos+1;
cout<<"MUY BIEN, HAS ACERTADO!!!!!!!!!"<<endl;
}
else
{
fallos=fallos+1;
cout<<"HAS FALLADO :( , SUERTE PARA LA PROXIMA VEZ"<<endl;
}
break;
case 2:
if (mult3==true && mult2==false && mult5==false)
{
aciertos=aciertos+1;
cout<<"MUY BIEN, HAS ACERTADO!!!!!!!!!"<<endl;
}
else
{
fallos=fallos+1;
cout<<"HAS FALLADO :( , SUERTE PARA LA PROXIMA VEZ"<<endl;
}
break;
case 3:
if (mult5==true && mult2==false && mult3==false)
{
aciertos=aciertos+1;
cout<<"MUY BIEN, HAS ACERTADO!!!!!!!!!"<<endl;
}
else
{
fallos=fallos+1;
cout<<"HAS FALLADO :( , SUERTE PARA LA PROXIMA VEZ"<<endl;
}
break;
case 4:
if (mult2==true && mult3==true && mult5==false)
{
aciertos=aciertos+1;
cout<<"MUY BIEN, HAS ACERTADO!!!!!!!!!"<<endl;
}
else
{
fallos=fallos+1;
cout<<"HAS FALLADO :( , SUERTE PARA LA PROXIMA VEZ"<<endl;
}
break;
case 5:
if (mult2==true && mult5==true && mult3==false)
{
aciertos=aciertos+1;
cout<<"MUY BIEN, HAS ACERTADO!!!!!!!!!"<<endl;
}
else
{
fallos=fallos+1;
cout<<"HAS FALLADO :( , SUERTE PARA LA PROXIMA VEZ"<<endl;
}
break;
case 6:
if (mult3==true && mult5==true && mult2==false)
{
aciertos=aciertos+1;
cout<<"MUY BIEN, HAS ACERTADO!!!!!!!!!"<<endl;
}
else
{
fallos=fallos+1;
cout<<"HAS FALLADO :( , SUERTE PARA LA PROXIMA VEZ"<<endl;
}
break;
case 7:
if (mult2==true && mult3==true && mult5==true)
{
aciertos=aciertos+1;
cout<<"MUY BIEN, HAS ACERTADO!!!!!!!!!"<<endl;
}
else
{
fallos=fallos+1;
cout<<"HAS FALLADO :( , SUERTE PARA LA PROXIMA VEZ"<<endl;
}
break;
case 8:
if (mult2==false && mult3==false && mult5==false)
{
aciertos=aciertos+1;
cout<<"MUY BIEN, HAS ACERTADO!!!!!!!!!"<<endl;
}
else
{
fallos=fallos+1;
cout<<"HAS FALLADO :( , SUERTE PARA LA PROXIMA VEZ"<<endl;
}
break;
}
}
void intercambio (int & linf, int & lsup)
{
if (linf>lsup)
{
cout<<"Has introducido los limites al reves, por tanto les dare la vuelta haciendo que el limite superior sea "<<linf<<" y el limite inferior sea "<<lsup<<endl;
linf=lsup;
lsup=linf;
}
}
void final (int fallos, int aciertos, int veces)
{
if (fallos==veces)
{
cout<<"MUY MAL, LAS HAS FALLADO TODAS"<<endl;
}
else
{
if (aciertos==veces)
{
cout<<"MUY BIEN CRACK LAS HAS ACERTADO TODAS ;)"<<endl;
}
else
{
if (aciertos==0)
{
cout<<"NO HAS DADO UNA, TIENES QUE ESTUDIAR MAS"<<endl;
}
else
{
cout<<"NO ESTA MAL PERO MEJOR SIGUE INTENTANDOLO HASTA ACERTARLAS TODAS"<<endl;
}

}
}
}


No hay comentarios:

Publicar un comentario