Categoría: 1. Programación y electrónica.
En este apartado voy a colocar un programa de C++ que despliega primero tres números aleatorios para que el interlocutor/usuario los memorice y los escriba como entradas. Después genera cuatro números aleatorios y pide nuevamente al usuario que los introduzca de memoria. El proceso sigue hasta desplegar y solicitar un máximo de 10 números. Entonces se despiega el número de aciertos, el número de errores y la calificación obtenida.
El ejercicio consiste en utilizar código de procedimientos, luego funciones, después clases y finalmente una aplicación para Windows.
En unos días más les comparto el primer código. Saludos.
El programa en código de procedimientos sería el siguiente:
// continuacion evalua expresiones logicas y pregunta al usuario/
// interlocutor la respuesta. Si acumula tres errores vuelve a empezar.
// En un segundo nivel asigna valores a cuatro variables de forma
// aleatoria entre 0 y 9. Realiza el mismo procedimiento hasta llegar a
// diez variables
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <cmath>
#include <ctime>
using namespace std;
int main()
{
int optn = 1;
do
{
const int cont=10;
const int almacen=10;
int val_azar;
int i;
int j=2;
int almacen_azar[almacen]={0};
int almacen_resp[almacen]={0};
int aciertos=0, errores=0, calificacion=0;
do
{
srand(time(NULL));
cout << " ";
for (i=0; i <= j; i++)
{
val_azar=double(rand())*10/RAND_MAX;
cout << val_azar << " ";
almacen_azar[i]=val_azar;
}
cout << endl;
for (i=0; i <= j; i++)
{
cout << "Introduce valor seguido de la tecla ENTER " << i+1 << " : ";
cin >> almacen_resp[i];
}
cout << "Los valores mostrados fueron: ";
for (i=0; i <= j; i++)
{
cout << almacen_azar[i] << " ";
}
cout << endl;
cout << "Tus respuestas fueron: ";
for (i=0; i <= j; i++)
{
cout << almacen_resp[i] << " ";
}
cout << endl << endl;
for (i=0; i <= j; i++)
{
if (almacen_resp[i] == almacen_azar[i])
aciertos ++;
else
errores ++;
}
j++;
if (j < 10)
cout << "Ahora memoriza " << j+1 << " numeros" << endl;
}
while (j < cont);
if (aciertos+errores > 0)
{
calificacion = aciertos*100/(aciertos+errores);
cout << "Hiciste: " << aciertos << " aciertos de " << aciertos + errores << " numeros memorizados!!" << endl;
cout << "Tu calificacion fue: " << calificacion << endl;
}
else
{
cout << "Error en el conteo de aciertos..." << endl;
}
cout << "Presiona un numero para continuar. Para salir presiona 0. EXIT ";
cin >> optn;
cout << endl;
}
while (optn != 0);
cin.get();
return 0;
}
En esta versión es necesario generar una pausa para que el usuario memorice los números, después se borre la pantalla y pregunte al usuario los números memorizados. Por lo pronto lo dejo así.
Utilizando programación con funciones, se podría escribir el programa de la siguiente manera:
// el programa genera tres valores aleatorios entre 0 y 9.
// A continuacion evalua expresiones logicas y pregunta al usuario /// interlocutor la respuesta. Si acumula tres errores el juego vuelve
// a comenzar. En un segundo nivel, asigna valores a cuatro variables
// de forma aleatoria entre 0 y 9. Realiza el mismo procedimiento hasta
// llegar a diez variables.
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <cmath>
#include <ctime>
using namespace std;
int generaAleatorio();
void almacenaAleatorio(int);
int despliegaValores();
int despliegaRespuestas();
void introduceRespuestas();
void almacenaPuntuacion();
int despliegaPuntuacion();
int val_azar, i, j=2, k;
const int almacen = 10;
const int cont = 10;
int almacen_azar[almacen]={0};
int almacen_resp[almacen]={0};
int aciertos, errores, calificacion;
int main()
{
do
{
for (k=0; k <= j; k++)
{
generaAleatorio();
almacenaAleatorio(almacen_azar[i]);
}
introduceRespuestas();
despliegaValores();
despliegaRespuestas();
almacenaPuntuacion();
j++;
cout << "Ahora debes memorizar " << j+1 << " numeros." << endl;
}
while (j < cont);
despliegaPuntuacion();
return 0;
}
int generaAleatorio()
{
srand(time(NULL));
val_azar = double(rand())*10.0/RAND_MAX;
cout << val_azar << ", ";
return val_azar;
}
void almacenaAleatorio(int)
{
almacen_azar[i] = val_azar;
return;
}
int despliegaValores()
{
cout << "Los valores mostrados fueron: ";
for (i=0; i <= j; i++)
cout << almacen_azar[i] << ", ";
return almacen_azar[i];
}
int despliegaRespuestas()
{
cout << "Tus respuestas fueron: ";
for (i=0; i <= j; i++)
cout << almacen_resp[i] << ", ";
return almacen_resp[i];
}
void introduceRespuestas()
{
for (i=0; i <= j; i++)
{
cout << "Introduce el valor y a continuacion presiona la tecla ENTER "
<< i++ << ": ";
cin >> almacen_resp[i];
}
return;
}
void almacenaPuntuacion()
{
for (i=0; i <= j; i++)
{
if (almacen_resp[i] == almacen_azar[i])
aciertos ++;
else
errores ++;
}
return;
}
int despliegaPuntuacion()
{
if (aciertos+errores > 0) // evita division por cero
{
calificacion = aciertos*100.0/(aciertos + errores);
cout << "Hiciste " << aciertos << " aciertos de "
<< aciertos+errores << " numeros memorizados!!" << endl;
}
return calificacion;
}
Este programa no se comporta en la misma forma que el anterior. Lo voy a revisar y en unos días pondré una nueva versión.
No hay comentarios:
Publicar un comentario