• Lunes 29 de Abril de 2024, 05:27

Autor Tema:  Ahorcado en C  (Leído 1606 veces)

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Ahorcado en C
« en: Sábado 21 de Marzo de 2009, 12:53 »
0
Código: C
  1.  
  2. #include<stdio.h>
  3. #include<string.h>
  4.  
  5. int mostramenu();
  6. void adivina_paraula(char paraula[longitud]);
  7.  
  8. int main()
  9. {
  10.     int aleatori,fi,longitud=0;
  11.     char paraula[longitud];
  12.    
  13.     do
  14.     {    
  15.           fi=0;
  16.           aleatori=mostra_menu();
  17.          
  18.           switch(aleatori)
  19.           {
  20.                case 1:
  21.                     strcat(paraula,"ordenador");
  22.                     longitud=strlen(paraula);
  23.                     adivina_paraula(paraula);
  24.                     break;
  25.                case 2:
  26.                     strcat(paraula,"software");
  27.                     longitud=strlen(paraula);
  28.                     adivina_paraula(paraula);
  29.                     break;
  30.                case 3:
  31.                     strcat(paraula,"videojuego");
  32.                     longitud=strlen(paraula);
  33.                     adivina_paraula(paraula);
  34.                     break;
  35.                case 4:
  36.                     strcat(paraula,"teclado");
  37.                     longitud=strlen(paraula);
  38.                     adivina_paraula(paraula);
  39.                     break;
  40.                case 5:
  41.                     fi=1;
  42.                     break;
  43.                default:
  44.                         printf("Opcio Incorrecte n");
  45.           }
  46.     }while(!fi);
  47.    
  48. }
  49. int mostra_menu()
  50. {
  51.     int aleatori;
  52.    
  53.     printf("nJuego del ahorcadonn");
  54.     do
  55.     {
  56.           printf("Per escullir una paraula,digues una opcio de la 1 a la 4.n");
  57.           printf("Si per el contrari vols sortir digues la opcio 5.n");
  58.           scanf("%d", &aleatori);
  59.          
  60.           if ((aleatori != 1) && (aleatori != 2) && (aleatori != 3) && (aleatori != 4) && (aleatori != 5))
  61.              printf("Opcio Incorrecte n");
  62.     }while(aleatori<1 || aleatori>5);
  63.    
  64.     return aleatori;
  65. }
  66. void adivina_paraula(char paraula[longitud])
  67. {
  68.      int i,errors=0,j,longitud;
  69.      char lletra,lletresintro[i],lletraerror[i];
  70.      printf("Introdueix una lletran");
  71.      fflush(stdin);
  72.      scanf("%c",&lletra);
  73.      
  74.  
  75.      
  76.      for (i=0; i<longitud; i++);
  77.      {
  78.          lletresintro[i]=lletra;
  79.          printf("Les lletres introdueides fins aquest moment son: %c,n",lletresintro[i]);
  80.          if (paraula[i] == lletra)
  81.             printf("La lletra %c es correcten");
  82.          else
  83.          {
  84.              printf("Error la lletra %c no esta en la paraula n");
  85.              for (j=0; j<=errors;j++)
  86.              {
  87.                  if(lletresintro[i]!=lletraerror[j])
  88.                  {
  89.                       errors++;
  90.                       lletraerror[i]=lletresintro[i];
  91.                  }
  92.              }
  93.              j=0;
  94.          }
  95.          printf("Les lletres introdueides que han sigut erronies son %c, n",lletraerror[i]);
  96.          printf("El numero de errors es: %d n",errors);
  97.      }
  98. }
  99.      
  100.    
  101.      
  102.  
  103.  

pq me dice 27 incompatible type for argument 1 of `adivina_paraula'  ?

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Ahorcado en C
« Respuesta #1 en: Sábado 21 de Marzo de 2009, 13:53 »
0
Estaría bien que especificaras más tu problema.

Además, te digo:

Código: C
  1. if ((aleatori != 1) && (aleatori != 2) && (aleatori != 3) && (aleatori != 4) && (aleatori != 5))
  2.  
Esto es un poco bestia, ¿no te parece? Menos código, más entendible y mejor pensado esto:

Código: C
  1.  if( (aleatori<1) && (aleatori>5) )
  2.  
Salud

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Ahorcado en C
« Respuesta #2 en: Sábado 21 de Marzo de 2009, 14:08 »
0
joe me has ido a quitar lo unico q esta bien xDDDD, eso  da igual pq siempre lo hacemos asi en clase aunk no quede bien visualmente.

ahora tengo un programa con el strlen que me dice incompatible aki:

strcat(paraula,"ordenador");
longitud=strlen(paraula);
adivina_paraula(paraula);

luego aki me dice q esta  indefinido longitud

void adivina_paraula(char paraula[longitud]);

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Ahorcado en C
« Respuesta #3 en: Sábado 21 de Marzo de 2009, 14:41 »
0
Cita de: "badyalberto"
so da igual pq siempre lo hacemos asi en clase aunk no quede bien visualmente.
No se trata de que quede bien visualmente, sino de hacer que corra más rápido porque hay menos comparaciones. Vaya profesor tienen...  :bad:

Cita de: "badyalberto"
luego aki me dice q esta indefinido longitud
void adivina_paraula(char paraula[longitud]);
Efectivamente, no puedes usar una variable para declarar el tamaño de un vector (ya sea como parámetro o como variable), porque como comprenderás, el compilador no sabe de antemano que valor va a tener y necesita reservar la memoria. Te basta con pasar un puntero:

Código: C
  1. void adivina_paraula(char paraula[]);
  2.  
Luego dentro de la función es tu problema de usar los índices adecuados para el vector.

Salud

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Ahorcado en C
« Respuesta #4 en: Sábado 21 de Marzo de 2009, 14:46 »
0
pero es q delante de la palabra me escribe valores raros :S y despues la palabra

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Ahorcado en C
« Respuesta #5 en: Sábado 21 de Marzo de 2009, 20:09 »
0
Usa strcpy() en vez de strcat(), que es para concatenar.