ayuda con ahorcado

Iniciado por amy26, 16 Marzo 2013, 18:51 PM

0 Miembros y 1 Visitante están viendo este tema.

amy26

hola!! pues veran me dejaron simular el juego del ahorcado, en donde en un vector guarde 5 palabras y el usuario debera escoger si lo buscara por letra o palabra y tendra 5 oportunidades para hacerlo
este es mi codigo, pero no me corre el de por letra si me pudieran ayudar seria genial. gracias
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <windows.h>

void palabra(char [10], char [10], char [10], char [10], char [10], int *);
void letra(char [10], char [10], char [10], char [10], char [10], char [10], char [10], char [10],  char [10], char [10], int *);

int main()
{
   char p1[10]={NULL},p2[10]={NULL},p3[10]={NULL},p4[10]={NULL},p5[10]={NULL},p11[10]={NULL},p22[10]={NULL},p33[10]={NULL},p44[10]={NULL},p55[10]={NULL};
   int bien=0,op,intento=5;
   printf("de la palabra\t");
   fflush(stdin);
   gets(p1);
    printf("de la palabra\t");
   fflush(stdin);
   gets(p2);
    printf("de la palabra\t");
   fflush(stdin);
   gets(p3);
    printf("de la palabra\t");
   fflush(stdin);
   gets(p4);
    printf("de la palabra\t");
   fflush(stdin);
   gets(p5);
   do
   {
        printf("1.por palabra\n2.por letra");
        scanf("%d",&op);
        switch(op)
        {
            case 1:
            palabra(p1,p2,p3,p4,p5,&bien);
            intento=intento-1;
            break;
            case 2:
            letra(p1,p2,p3,p4,p5,p11,p22,p33,p44,p55,&bien);
            intento=intento-1;
            break;
        }
   }while(intento>0||bien!=7);
   return 0;
}

void palabra(char p1[10],char p2[10],char p3[10],char p4[10],char p5[10],int*bien)
{
    char r1[10],r2[10],r3[10],r4[10],r5[10];
    int lon,pal,i;
    lon=strlen(p1);
   for(i=0;i<lon;i++)
   {
      r1='_ ';
        printf("%c", r1);
   }
   lon=strlen(p2);
   for(i=0;i<lon;i++)
   {
      r2='_ ';
        printf("%c", r2);
   }
   lon=strlen(p3);
   for(i=0;i<lon;i++)
   {
      r3='_ ';
        printf("%c", r3);
   }
   lon=strlen(p4);
   for(i=0;i<lon;i++)
   {
      r4='_ ';
        printf("%c", r4);
   }
   lon=strlen(p5);
   for(i=0;i<lon;i++)
   {
      r5='_ ';
        printf("%c", r5);
   }
   printf("introduce la palabra");
   fflush(stdin);
   gets(pal);
   if(strcmp(p1,pal)==0)
   {
        printf("felicidades adivinaste la palabra");
        *bien=7;
    }
    else
    {
       if(strcmp(p2,pal)==0)
        {
            printf("felicidades adivinaste la palabra");
            *bien=7;
        }
        else
        {
           if(strcmp(p3,pal)==0)
            {
                printf("felicidades adivinaste la palabra");
                *bien=7;
            }
            else
            {
               if(strcmp(p4,pal)==0)
                {
                printf("felicidades adivinaste la palabra");
                *bien=7;
                }
                else
                {
                   if(strcmp(p5,pal)==0)
                    {
                        printf("felicidades adivinaste la palabra");
                        *bien=7;
                    }
                    else
                    {
                        printf("perdiste");
                        *bien=0;
                    }
                }
            }
        }
    }
}

void letra(char p1[10],char p2[10],char p3[10],char p4[10],char p5[10],char p11[10],char p22[10],char p33[10],char p44[10],char p55[10],int*bien)
{
    char letra;
    int i,lon,j;
    lon=strlen(p1);
   for(j=0;j<=lon;j++)
   {
      p11[j]='_ ';
        printf("%c", p11[j]);
   }
   lon=strlen(p2);
   for(j=0;j<lon;j++)
   {
      p22[j]='_ ';
        printf("%c", p22[j]);
   }
   lon=strlen(p3);
   for(j=0;j<lon;j++)
   {
      p33[j]='_ ';
        printf("%c", p33[j]);
   }
   lon=strlen(p4);
   for(j=0;j<lon;j++)
   {
      p44[j]='_ ';
        printf("%c", p44[j]);
   }
   lon=strlen(p5);
   for(j=0;j<lon;j++)
   {
      p55[j]='_ ';
        printf("%c", p55[j]);
   }
    printf("dame una letra");
    fflush(stdin);
    gets(letra);
    for(i=0; i<strlen(p1);i++)
    {
        if(strcmp(letra,p1)==0)
        {
            p11=letra;
            printf("%c",p11);
        }
    }
    for(i=0; i<strlen(p2);i++)
    {
        if(strcmp(letra,p2)==0)
        {
            p11=letra;
            printf("%c",p22);
        }
    }
    for(i=0; i<strlen(p3);i++)
    {
        if(strcmp(letra,p3)==0)
        {
            p11=letra;
            printf("%c",p33);
        }
    }
    for(i=0; i<strlen(p4);i++)
    {
        if(strcmp(letra,p4)==0)
        {
            p11=letra;
            printf("%c",p44);
        }
    }
    for(i=0; i<strlen(p5);i++)
    {
        if(strcmp(letra,p5)==0)
        {
            p11=letra;
            printf("%c",p55);
        }
    }
}

$Edu$

Yo si fuera tu me plantearia todo en un papel y lapicera de nuevo. Tienes muchas cosas para unir, muchos ifs separados que pueden ir todos juntos al igual que los bucles For.
Si te planteas todo desde 0, creando funciones/procedimientos para hacer cada cosa, etc, te saldra mejor.

Puntoinfinito

Buuuf como bien dice Edu, tienes un montón de operadores lógicos en tu código que lo hacen mucho más feo, yo de tu usaba funciones que enlacen todos esos comparativos y para que quede mucho mejor entendible para el usuario (no estaría de más xD) haz una clase o estructura... Saludos
AHORA EN SOFTONIC || CLICK HERE!!
Base64: QWNhYmFzIGRlIHBlcmRlciAxIG1pbnV0byBkZSB0dSB2aWRhLiBPbOkh



HACK AND 1337 : http://hackandleet.blogspot.com
WEBSITE: http://www.infiniterware.