Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/11/2011, 15:55
Avatar de AlmaVagabunda
AlmaVagabunda
 
Fecha de Ingreso: noviembre-2011
Ubicación: San Juan De Alicante, Valenciana, Spain, Spain
Mensajes: 20
Antigüedad: 13 años
Puntos: 1
Información Programa Ahorcado - Un error

Hola, soy nuevo por aqui como se daran cuenta.

Tengo que entregar un trabajo de programacion en C, lo tengo que hacer con el Qt.

El caso, es que llevo 3 dias volviendome loco (aun estoy aprendiendo, hace dos meses no sabia nada). El programa compila y ejecuta, pero me salen 3 errores. Y ademas, una instruccion que deberia hacer, no consigo que la haga.

En concreto es cuando un jugador acierta la palabra, deberia imprimir en pantalla que ha ganado y que si se juega otra partida, para que el otro jugador elija otra, pero no funciona, la palabra queda completada, pero sigue pidiendo letra... solo sale de ahi cuando fallas todos los intentos.

Ese es mi mayor problema.
Despues otro, que no me lo han pedido, pero me gustaria saber como ponerlo, es limitar al usuario que solo ponga letras a la hora de elegir la palabra a adivinar, y si pone numeros que avise de que no puede ser. Pero si hay que cambiar demasiado codigo, lo descarto, es simplemente algo que me hacia ilusion hacer.

Y el ultimo, que he dicho al principio, me salen 3 pequeños errores, y no consigo saber de que son.

He decidido publicar aqui mis dudas por que he visto que el foro es muy bueno, ya he solucionado algunas dudas haciendo visitas sin registrarme, pero bueno, ya me toco a mi ser el pregunton jajaja.

Aqui les dejo el codigo que tengo, espero que no sea mucha cosa, no me gusta molestar.
Un saludo, y muchas gracias a todos los que ayudan en el foro ;)
Código c:
Ver original
  1. //INCLUIMOS LAS LIBRERIAS NECESARIAS PARA QUE EL CODIGO SE EJECUTE CORRECTAMENTE.
  2.  
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <conio.h>
  6. #include <string.h>
  7.  
  8. int main(void) {
  9.  
  10.     //DECLARACION VARIABLES A UTILIZAR EN EL PROGRAMA.
  11.     int i=5, j=0, puntosJug1 = 0, puntosJug2 = 0, turno = 1, medidaCad, centinela;
  12.     char palabra[50], cadena[51];
  13.     char jugar, letra;
  14.  
  15.     do {
  16.         //CONTROLAMOS LOS TURNOS DE CADA JUGADOR MEDIANTE ESTE IF-ELSE.
  17.         if (turno%2!=0) {
  18.             //CONTROLAMOS EL DATO QUE INTRODUCE EL USUARIO.
  19.             do {
  20.                 printf("Introduce la palabra a adivinar Jugador 1: ");
  21.                 scanf("%s", palabra);
  22.                 fflush(stdin);
  23.                 system("cls");
  24.             }
  25.  
  26.             while (strlen(palabra) > 50);
  27.             medidaCad = strlen(palabra);
  28.             strcpy(cadena, "--------------------------------------------------");
  29.             cadena[medidaCad] = '\0';
  30.  
  31.             do {
  32.                 //INICIALIZAMOS LA VARIABLE CENTINELA.
  33.                 centinela = 0;
  34.                 printf("Palabra: %s\n", cadena);
  35.                 printf("Intentos restantes: %d\n\n", i);
  36.  
  37.                 do {
  38.                     printf("Introduce una letra minuscula (Jug.2): ");
  39.                     scanf("%c", &letra);
  40.                     fflush(stdin);
  41.                 }
  42.  
  43.                 while (letra < 'a' || letra > 'z');
  44.  
  45.                 for (j=0;j<strlen(palabra);j++){
  46.  
  47.                     if (palabra[j] == letra)
  48.                     {
  49.                         cadena[j] = letra;
  50.                         centinela = 1;
  51.                     }
  52.                 }
  53.  
  54.                 if (centinela != 1)i--;
  55.                 printf("\n\n");
  56.             }
  57.  
  58.             while(i != 0 || cadena==palabra);
  59.       //AQUI ES DONDE ESTA EL CODIGO QUE DEBERIA EJECUTARSE SI SE ACIERTA LA PALABRA, PARANDO , IMPRMIENDO LA FRASE Y SUMANDO 1 PUNTO AL JUGADOR. PERO NO CONSIGO QUE FUNCIONE
  60.             if (cadena==palabra) {
  61.                 printf("Has acertado la palabra!!");
  62.                 puntosJug2++;
  63.             }
  64.  
  65.             else puntosJug1++;
  66.         }
  67.  
  68.         else{
  69.             //INICIALIZAMOS LA VARIABLE CENTINELA.
  70.             centinela = 0;
  71.  
  72.             //CONTROLAMOS EL DATO QUE INTRODUCE EL USUARIO.
  73.             do {
  74.                 printf("Introduce la palabra a adivinar Jugador 2: ");
  75.                 scanf("%s", palabra);
  76.                 fflush(stdin);
  77.                 system("cls");
  78.             }
  79.  
  80.             while (strlen(palabra) > 50);
  81.             medidaCad=strlen(palabra);
  82.             strcpy(cadena, "--------------------------------------------------");
  83.             cadena[medidaCad]='\0';
  84.  
  85.             do{
  86.                 //INICIALIZAMOS LA VARIABLE CENTINELA.
  87.                 centinela = 0;
  88.                 printf("Palabra: %s\n", cadena);
  89.                 printf("Intentos restantes: %d\n\n", i);
  90.  
  91.                 do{
  92.                     printf("Introduce una letra minuscula (Jug.1): ");
  93.                     scanf("%c", &letra);
  94.                     fflush(stdin);
  95.                 }
  96.  
  97.                 while (letra < 'a' || letra > 'z');
  98.  
  99.                 for (j=0;j<strlen(palabra);j++) {
  100.  
  101.                     if (palabra[j]==letra) {
  102.                         cadena[j]=letra;
  103.                         centinela=1;
  104.                     }
  105.                 }
  106.  
  107.                 if (centinela != 1)i--;
  108.                 printf("\n\n");
  109.             }
  110.  
  111.             while(i!=0 || cadena==palabra);
  112.  
  113.             if (cadena==palabra) {
  114.                 printf("Has acertado la palabra!!");
  115.                 puntosJug1++;
  116.             }
  117.  
  118.             else puntosJug2++;
  119.         }
  120.  
  121.         do{
  122.             printf("Quereis jugar mas partidas? <S o N>: ");
  123.             scanf("%c", &jugar);
  124.             fflush(stdin);
  125.         }
  126.  
  127.         while (jugar != 'S' && jugar != 's' && jugar != 'N' && jugar != 'n');
  128.         //INCREMENTAMOS LA VARIABLE TURNO PARA QUE PREGUNTE AL OTRO JUGADOR.
  129.         turno++;
  130.         system("cls");
  131.         //INICIALIZAMOS LOS VALORES QUE NECESITAMOS PONER EN SU ESTADO INICIAL.
  132.         i=5;
  133.         j=0;
  134.     }
  135.  
  136.     while (jugar == 'S' || jugar == 's');
  137.     printf("Puntuacion final: (Jug.1) %d - %d (Jug.2)\n", puntosJug1, puntosJug2);
  138.  
  139.     //FUNCIÓN QUE NOS PERMITE CONTROLAR LA SALIDA DEL PROGRAMA, DANDOLE A 1 TECLA.
  140.     system ("pause");
  141.     return(0);
  142. }

Última edición por AlmaVagabunda; 10/11/2011 a las 16:18 Razón: Titulo muy general