Ver Mensaje Individual
  #8 (permalink)  
Antiguo 31/10/2008, 21:01
dioscw
 
Fecha de Ingreso: octubre-2008
Mensajes: 6
Antigüedad: 15 años, 11 meses
Puntos: 0
Respuesta: Validar un caracter en C

Estoy viendo el primer curso de programación en la universidad es programación en C para Ingenieria de Sistemas, tengo que declarar las variables como globales por ahora, y no puedo usar el getch porque no lo han dado.

El problema con mi programa es que despues de la primera corrida no quiere validar el sexo aunque sea correcto.

Ya lo e cambiado un poco y lo pongo de nuevo:
Código:
#include <stdio.h>
#include <stdio.h>
#include <conio.c>
#include <time.h>

char  opc;
int edad=0, apuesta=0, n1=0, n2=0, n3=0;//variables introducidas por el usuario
//variables usadas como contadores y para almacenar resultados de las operaciones matematicas
int cm=0, cf=0, ganancia=0, perd=0, g1=0, g2=0, g3=0;
int d1=0, d2=0, d3=0; //variable que almacena los lanzamientos aleatorios del dado

void leerInformacion()
{
do
{
            char sexo;
            do// verifica el sexo introducido por la persona
            {
                printf ("\nINTRODUZCA F PARA FEMENINO Y M PARA MASCULINO:");
                   scanf ("%c", & sexo);
                      getchar();
               if ((sexo!='f')&&(sexo!='m'))
               {   
                  printf("\nSEXO INCORRECTO INTENTE DE NUEVO\n");
               }//cierra if de sexo
            }//cierra do de sexo
            while((sexo!='f')&&(sexo!='m'));
            
            if (sexo=='m')
            {
               cm=cm+1;//almacena una unidad en el contador de hombres
            }
            else if (sexo=='f')
            {
               cf=cf+1;//almacena una unidad en el contador de mujeres
            }
             
            do//Verifica que la edad este dentro del rango permitido
            {
               printf ("\nINTRODUZCA SU EDAD:");
                  scanf("%d", &edad); 
                     getchar(); 
                     if ((edad<18)||(edad>100))
                     {
                        printf ("\nEDAD PERMITIDA ENTRE 18 Y 100 \nPRESIONE ENTER E INTENTE DE NUEVO:");
                           getchar();  
                     }
             }
             while((edad<18)||(edad>100));    
    
             printf ("\nINTRODUZCA EL MONTO QUE DESEA APOSTAR:");//Pide el monto a apostar
                scanf("%d", &apuesta);//almacena el monto a apostar en la variable "apuesta"       
    
             do
             {
                printf("\nINTRODUZCA UN DIGITO DEL 1 AL 6:");
                   scanf("%d", &n1); 
                      getchar(); 
                      if ((n1<1)||(n1>6))
                      {
                         printf ("USTED DEBE INTRODUCIR UN NUMERO ENTRE 1 Y 6");
                            getchar();  
                      }
             }    
             while ((n1<1)||(n1>6));
             
             do
             {
                printf("\nINTRODUZCA UN SEGUNDO DIGITO DEL 1 AL 6:");
                   scanf("%d", &n2);
                      getchar(); 
                      if ((n2<1)||(n2>6))
                      {
                         printf ("USTED DEBE INTRODUCIR UN NUMERO ENTRE 1 Y 6");
                            getchar();  
                      } 
             }                         
             while ((n2<1)||(n2>6));
    
             do
             {
                printf("\nINTRODUZCA UN TERCER DIGITO DEL 1 AL 6:");
                   scanf ("%d", &n3);
                      getchar(); 
                      if ((n3<1)||(n3>6))
                      {
                         printf ("\nUSTED DEBE INTRODUCIR UN NUMERO ENTRE 1 Y 6");
                         getchar();  
                      }
             }
             while ((n3<1)||(n3>6));
	
             srand(time(NULL)); //llama al reloj del PC y utiliza los segundos para el generador de numeros aleatorios "sacado de Deitel"
                d1=1+(rand()%6);//genera un numero aleatorio entre el 1 y el 6
                   d2=1+(rand()%6);//genera un numero aleatorio entre el 1 y el 6
                      d3=1+(rand()%6);//genera un numero aleatorio entre el 1 y el 6
            
// CALCULA LAS GANANCIAS EN BASE A LA CANTIDAD DE NUMEROS ACERTADOS POR EL USUSARIO            
             if ((n1!=d1)&&(n1!=d2)&&(n1!=d3)&&(n2!=d1)&&(n2!=d2)&&(n2!=d3)&&(n3!=d1)&&(n3!=d2)&&(n3!=d3)) //NO ADIVINA NINGUN NUMERO pierde el triple de apuesta
             {
                ganancia=-(apuesta*3);
                   perd=perd+1;//almacena una unidad en el contador de juegos perdidos
             }
             else if ((n1==d1)||(n1==d2)||(n1==d3)||(n2==d1)||(n2==d2)||(n2==d3)||(n3==d1)||(n3==d2)||(n3==d3))//ADIVINA UN SOLO NUMERO  gana el monto apostado
             {
                ganancia=apuesta;
                   g1=g1+1;//almacena una unidad en el contador de un solo numeero adivinados
             }
             else  if (((n1==d1)||(n1==d2)||(n1!=d3))||((n1==d1)||(n1!=d2)||(n1!=d3))||((n1!=d1)||(n1==d2)||(n1!=d3)))//ADVIVINA DOS NUMEROS gana el doble de lo apostado
             {
                ganancia=(apuesta*2);
                   g2=g2+1;//almacena una unidad en el contador de dos numeros adivinados
             }
             else if (((n1==d1)||(n1==d2)||(n1==d3))&&((n2==d1)||(n2==d2)||(n2==d3))&&((n3==d1)||(n3==d2)||(n3==d3)))//ADIVINA TODOS LOS NUMEROS gana el triple de los apostado
             {
                ganancia=(apuesta*3);
                   g3=g3+1; //almacena una unidad en el contador de tres numeros adivinados
             }
    
             printf("%s %d","\nEL PRIMER VALOR ES:", d1);
                printf("%s %d","\n\nEL SEGUNDO VALOR ES:", d2);
                   printf("%s %d","\n\nEL TERCER VALOR ES:", d3);
                      printf("%s %d", "\n\nSU GANANCIA ES:",ganancia);
                         printf("\n\nDESEA CONTINUAR?(S)I - (N)O: ");
                             scanf("%c", &opc);
                         
    }
    
    while ((opc=='s') || (opc=='S'));
}// cierra el void

void mostrarResultado()
{
    
       printf("%s %d", "\nVECES QUE SE GANO EL MONTO APOSTADO:", g1);
          printf("%s %d", "\n\nVECES QUE SE GANO EL DOBLE DEL MONTO APOSTADO:", g2);
             printf("%s %d", "\n\nVECES QUE SE GANO EL TRIPLE DEL MONTO APOSTADO:", g3);
                printf("%s %d", "\n\nVECES QUE SE PERDIO:", perd); 
                   getchar();
    if (cf>cm)
    {
       printf ("\n\nLAS MUJERES HAN JUGADO MAS VECES QUE LOS HOMBRES");
          getchar();
    }
    else if (cf<cm)
    {
       printf ("\n\nLOS HOMBRES HAN JUGADO MAS VECES QUE LAS MUJERES");
          getchar();
    }
}


main()
{
    leerInformacion();
    mostrarResultado();
    getchar();
    
}

Saludos.

Última edición por dioscw; 31/10/2008 a las 21:27