Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-08-2012
m1kevil m1kevil is offline
Registrado
NULL
 
Registrado: ago 2012
Posts: 7
Poder: 0
m1kevil Va por buen camino
Ayuda con un pedacito de codigo! Por favor!

Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int TirarDados (void);
int CantJugadores (void);
int transEntero(char);
int Jugadores;



int main () {
    
    
    srand (time(NULL));
    
    printf("!Bienvenidos al juego: EL PRESO!\n\n");
    
    Jugadores = CantJugadores();



system("pause");
return EXIT_SUCCESS;

    }


// Funcion para tirar los dados //  
int TirarDados (void) 
{    
     Dados = rand() % 11+2;
     printf("Arrojas los dados. Has sacado %d! \n", Dados);
    
    return Dados; 
}  

// Funcion para pasar de char a entero //
int transEntero(char s)
{
    return s - '0';
} 

// Funcion para validar la cantidad de jugadores al principio del juego//
int CantJugadores ()
{
    printf("Ingrese la cantidad de jugadores (Minimo 2, Maximo 5): ");
    char jugador = getchar();
    int Jugadores = transEntero(jugador);
    while (Jugadores < 2 || Jugadores > 5)
    {
    printf("Ingrese una cantidad de jugadores valida: \n");
    char jugador = getchar();
    int Jugadores = transEntero(jugador);
    }
    printf("Los participantes del juego seran %d.\n", Jugadores);
    return Jugadores;    
}
El tema es asi, estoy empezando a codificar la primer parte de un juego para un proyecto de la universidad. Me encontre con un problema cuando quiero validar la cantidad de jugadores que van a ingresar por teclado. Tengo que validar que sea un valor entre 2 y 5 Jugadores, y a su vez que el programa no aborte ni pinche cuando se ingrese una letra o un caracter distinto de un decimal.
La primera parte va bien pero si se cumple la condicion del while, es decir se ingresa algo que no va entre 2 y 5, luego el programa pide nuevamente ingresador una cantidad de jugadores valida... y por mas que se ponga un 2, 3, 4 o 5, el programa no responde bien y vuelve a pedir una cantidad de jugadores valida...
Por favor alguien que me ayude a darme cuenta del error!

Saludos!!

Última edición por dec fecha: 01-09-2012 a las 20:39:04. Razón: Añadir la etiqueta CODE
Responder Con Cita
  #2  
Antiguo 31-08-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Mira esta adaptación:
Código:
#include <conio.h>

int CantJugadores ()
{
  int Jugadores;
  do{
    printf("Ingrese una cantidad de jugadores valida (2 a 5): ");
    Jugadores = transEntero(getche());
    printf("\n");
  }while (Jugadores < 2 || Jugadores > 5);

  printf("Los participantes del juego seran %d.\n", Jugadores);
  return Jugadores;
}
PD: Pon las etiquetas de código, se entenderá mejor


Saludos.
Responder Con Cita
  #3  
Antiguo 31-08-2012
m1kevil m1kevil is offline
Registrado
NULL
 
Registrado: ago 2012
Posts: 7
Poder: 0
m1kevil Va por buen camino
Muchisimas gracias escafandra! Funciona bien! Hace lo que necesito.. pero me muestra los mensajes del printf por duplicado, ya sea si pongo un numero valido o no valido me muestra 2 veces por pantalla cada mensaje.. sabes a que puede deberse?


Por otro lado, cual es la diferencia entre getche y getchar? Muchas gracias por tu ayuda!!


PERDON! EDIT >>>> Ya me di cuenta solo... le daba enter despues de ingresar el digito por teclado, y getche se hace el echo por pantalla sin necesidad de apretar enter. Muy bueno! GRACIAS!

Podrias ayudarme con lo ultimo? si necesitara verificar numeros de mas de 2 digitos, ya sea entre 50 y 200 por ejemplo, podria usar lo mismo? o tendria problemas al ingresar una letra 'a' por ej: me daria el numero entero 97 ???
Por ejemplo ingrese una 'l' y me dio el numero 60


Muchas gracias!

Última edición por m1kevil fecha: 31-08-2012 a las 09:02:52. Razón: Me di cuenta viendo por internet...
Responder Con Cita
  #4  
Antiguo 31-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por m1kevil Ver Mensaje
...
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración

Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #5  
Antiguo 31-08-2012
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Cita:
Empezado por m1kevil Ver Mensaje
...si necesitara verificar numeros de mas de 2 digitos, ya sea entre 50 y 200 por ejemplo, podria usar lo mismo?
Mejor estudia la función atoi.

Saludos.
Responder Con Cita
  #6  
Antiguo 31-08-2012
m1kevil m1kevil is offline
Registrado
NULL
 
Registrado: ago 2012
Posts: 7
Poder: 0
m1kevil Va por buen camino
Le voy a echar un vistazo, muchas gracias por su ayuda! Perdon por lo de los tags, no lo había visto.


Saludos!
Responder Con Cita
  #7  
Antiguo 31-08-2012
m1kevil m1kevil is offline
Registrado
NULL
 
Registrado: ago 2012
Posts: 7
Poder: 0
m1kevil Va por buen camino
Código:
// Funcion para elegir la maxima puntuacion al ppio del juego //
int ElegirPuntuacion ()
{
    char buffer [256];
    do
    {
    printf("Ingrese la cantidad de presos que se permiten dejar escapar (50 a 200): ");
    fgets (buffer, 256, stdin);
    PuntuacionMax = atoi (buffer);
    }
    while (PuntuacionMax < 50 || PuntuacionMax > 200);
    printf("No podran escaparse mas de %d presos. Si esto ocurre, el jugador pierde. A Jugar! \n", PuntuacionMax);
    return PuntuacionMax;   
}
Aquí les pego el código que logré con la funcion atoi. Muchas gracias a todos funciona de maravilla.. y de paso voy aprendiendome las reglas del foro!


Saludos!! Pueden cerrar el thread si quieren!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Un pedacito de México AzidRain La Taberna 3 22-01-2012 13:34:32
AYUDA por favor!!! Melcv Varios 2 28-06-2006 21:19:35
Codigo de barras + QuickReport ... Help por favor!!!! jdelphi Impresión 3 29-01-2005 07:58:00
Traducir un codigo de VB a Delphi ¡¡¡¡ Por favor !!!! Betsa23 Internet 2 30-11-2004 16:29:35
Ayuda por favor jtellof Conexión con bases de datos 4 08-09-2003 21:56:24


La franja horaria es GMT +2. Ahora son las 08:13:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi