Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/08/2014, 17:26
Avatar de nalsac
nalsac
 
Fecha de Ingreso: agosto-2014
Mensajes: 4
Antigüedad: 9 años, 8 meses
Puntos: 0
Problema con código C

Hola muy buenas, he comenzado hace poco mi pequeña andadura por este lenguaje, y quise programar un sencillo juego de "los chinos", ese en el cual sacas un número y tienes que intuir cuantos sacarán los demás y acertar el resultado total.

El caso es que hay dos líneas en el código (línea 19 y 51) en las que aparece un -48, porque por algún motivo que se escapa a mi entendimiento, al introducir 1 y mostrar la variable que ha de contener ese 1, muestra un 49, y al hacer la prueba con un 2 el valor almacenado es 50. Esto me ha ocurrido en 2 líneas del código, y la verdad estaría muy agradecido si alguien pudiera decirme que está pasando.

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4.  
  5. int main(void){
  6.  
  7.  
  8.     int chin_jug, chin_pc1, chin_pc2, tot_chin, prediccion, error;
  9.     char continuar ='s';
  10.  
  11. do{
  12.  
  13.     do{
  14.    
  15.     printf("\nIntroduce el número de chinos que quieres usar\n(De 1 a 3)\n");
  16.  
  17.  
  18.    
  19.     chin_jug=getchar()-48; //Sin motivo aparente al realizar la entrada del número se suma 48
  20.     fflush(stdin);
  21.    
  22.     if(chin_jug>=0 && chin_jug<=3){
  23.         error = 0;
  24.     }else{
  25.         printf("\nHas introducido un número de chinos no válido\n\n");
  26.         error = 1;
  27.     }
  28.     }while(error==1);
  29.  
  30.  
  31.  
  32.     //printf("\nseñor=%d\n", chin_jug);
  33.  
  34.    
  35.     printf("\nEl npc 1 está eligiendo su jugada\n");
  36.     chin_pc1 = rand() % 4;
  37.     printf("\nEl npc 2 está eligiendo su jugada\n");
  38.     chin_pc2 = rand() % 4;
  39.    // printf("\npc1=%d\n", chin_pc1);
  40.    // printf("\npc2=%d\n", chin_pc2);
  41.  
  42.    
  43.     tot_chin = (chin_jug + chin_pc1 + chin_pc2);
  44.    // printf("\ntotal=%d\n",tot_chin);
  45.    
  46.  
  47.     printf("\n¿Cuántos chinos hay en juego?\n");
  48.  
  49.    
  50.  
  51.     prediccion = getchar()-48;//Otra vez suma 48 al resultado sin motivo aparente
  52.     fflush(stdin);
  53.     printf("%d",prediccion);
  54.  
  55.    
  56.     if(prediccion == tot_chin){
  57.             printf("\n¡Enhorabuena! has acertado, había %d chinos en juego\n", tot_chin);
  58.         }else{
  59.             printf("\n¡Fallaste! Había %d chinos en juego\n", tot_chin);
  60.         }
  61.  
  62.     printf("\n¿Quieres jugar otra vez?\n\ns/n\n");
  63.  
  64.     continuar=getchar();
  65.     fflush(stdin);
  66.  
  67.     system("cls");
  68.    
  69.  
  70. }while (continuar=='s');
  71.  
  72. }