Corrección de programa en C++ con menú: dados, DNI, aleatorios y moneda
Menú de programas en C++
Programa en C++ con un menú de opciones que permite ejecutar distintos ejercicios.
Código corregido
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(void) {
int op, tirada, num, x, y, dni, letra, cara, cruz, uno, dos, tres, cuatro, cinco, seis;
char letras[23] = {'T','R','W','A','G','M','Y','F','P','D','X','B','N','J','Z','S','Q','V','H','L','C','K','E'};
cout << "Menú" << endl;
cout << "----" << endl;
cout << "1. Programa 1" << endl;
cout << "2. Programa 2" << endl;
cout << "3. Salir" << endl;
cout << "4. Programa 4" << endl;
cout << "Dime una opción:" << endl;
cin >> op;
switch (op) {
case 1: {
int tirada, dado, n1, n2, n3, n4, n5, n6;
srand(time(NULL));
n1 = 0; n2 = 0; n3 = 0; n4 = 0; n5 = 0; n6 = 0;
cout << "Programa que hace 100 tiradas de un dado y te dice el número de veces que ha salido cada número" << endl;
for (tirada = 0; tirada < 100; tirada++) {
dado = rand() % 6 + 1;
cout << dado << "\t";
if (dado == 1) {
n1 = n1 + 1;
} else if (dado == 2) {
n2 = n2 + 1;
} else if (dado == 3) {
n3 = n3 + 1;
} else if (dado == 4) {
n4 = n4 + 1;
} else if (dado == 5) {
n5 = n5 + 1;
} else {
n6 = n6 + 1;
}
}
cout << endl;
cout << "El número 1 ha salido " << n1 << " veces" << endl;
cout << "El número 2 ha salido " << n2 << " veces" << endl;
cout << "El número 3 ha salido " << n3 << " veces" << endl;
cout << "El número 4 ha salido " << n4 << " veces" << endl;
cout << "El número 5 ha salido " << n5 << " veces" << endl;
cout << "El número 6 ha salido " << n6 << " veces" << endl;
break;
}
case 2:
cout << "Programa 2" << endl;
cout << "Programa que calcula la letra del DNI" << endl;
cout << "Dime tu DNI sin letra:" << endl;
cin >> dni;
letra = dni % 23;
cout << "Su DNI es: " << dni << "-" << letras[letra] << endl;
break;
case 3:
cout << "Programa 3" << endl;
cout << "Programa que genera dos aleatorios entre 0 y 9" << endl;
srand(time(NULL));
x = rand() % 10 + 0;
y = rand() % 10 + 0;
cout << "Un número es: " << x << endl;
cout << "Otro número es: " << y << endl;
break;
case 4:
cout << "Programa 4" << endl;
cout << "Programa que simula la tirada de una moneda" << endl;
srand(time(NULL));
cara = 0;
cruz = 0;
for (tirada = 0; tirada < 100; tirada = tirada + 1) {
y = rand() % 2;
if (y == 1) {
cout << "Cara" << endl;
cara = cara + 1;
} else {
cout << "Cruz" << endl;
cruz = cruz + 1;
}
}
cout << "El número de caras ha sido " << cara << " y el número de cruces ha sido " << cruz << endl;
break;
}
return 0;
}Correcciones realizadas
- Se añadió
return 0;al final demain. - Se añadieron llaves en el caso 1 para delimitar el ámbito de las variables locales.
- Se sustituyeron los bloques
else { if ... }anidados porelse if, sin cambiar la lógica. - Se corrigieron mayúsculas, acentos y ortografía en los mensajes ("número", "cruces", "Dime", etc.).
- Se corrigió el comentario del programa 3, que indicaba "en 4 y el 10" cuando el código genera números entre 0 y 9.
- Se añadieron saltos de línea en la salida del caso 1 para que los resultados no queden pegados.