Buenas a todos, el otro día hice un programa y tuve un problema... El programa trata de que pongas un numero aleatorio y que tu introduzcas un valor y te diga si lo has acertado o no. El problema viene en cuanto introduces el dato, Si pones numero superior a 10 o menor a 0 de error, si pones una letra también da error, pero si pones primero un numero seguido de una letra me lo acepta como numero. Y quiero solucionar esto de manera que si tu pones un numero que no sea valido tal sea seguido de letra o no te de error. No se si me he explicado bien... Aquí dejo el código:
Gracias por su ayuda.
Un saludo.
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
void main() {
srand(time(NULL));
int r, res, i;
bool exit = false, ok;
char retry;
printf("JOC DE ENDEVINAR EL NUMERO\n\n");
do {
r = (rand() % 10) + 1;
i = 0;
do{
printf("Introdueix un numero (1-10): ");
/*-------------------------------------------*/
/*-------------------------------------------*/
/*-------------------------------------------*/
ok = scanf("%i", &res);
/*-------------------------------------------*/
/*-------------------------------------------*/
/*-------------------------------------------*/
while (getchar() != '\n');
if (ok && res >= 1 && res <= 10 ) {
if (res < r)
{
printf("Nº massa baix\n");
}
else if (res > r) {
printf("Nº massa alt\n");
}
else if (res == r) {
printf("Has encertat!\n");
exit = true;
}
i++;
}
else
{
printf("No has introduit un valor disponible\n");
}
}while (i < 12 && exit == false );
printf("Intents realitzats: %d\n", i);
exit = false;
do{
printf("Vols tornar a jugar? (Y/N): ");
scanf("%c", &retry);
retry = towlower(retry);
while (getchar() != '\n');
if (retry == 'n')
{
exit = true;
}
else if (retry == 'y')
{
}
else
{
printf("Introdueix una opcioo vàlida\n");
}
}while (retry != 'y' && retry != 'n');
} while (exit == false);
system("pause");
}
Gracias por su ayuda.
Un saludo.