Programación General > C/C++

 Programa retorna al menu despues de intentar usarlo 2 veces

(1/2) > >>

Claudisimo:
Hola, una vez mas recurro a ustedes para resolver una duda que me tiene muy cabreado. Llevo bastante rato tratando de ver el error pero no logro encontrarlo. Estoy programando el ahorcado (bajo codeblocks con mingw), sin funciones, y el programa corre 1 vez bien (aun no hago el dibujo en todo caso). Después (ya sea se gane o pierda) vuelve al menú, ejecuto otra vez el juego y pide el nombre del archivo (las palabras deben venir de un archivo). Cuando lo ingreso nuevamente, o ingreso otro archivo el programa vuelve al menú, siendo que debería funcionar otra vez.

Aqui está el código, espero alguien pueda responderme. Perdonen pero soy bastante desordenado:


--- Código: C++ --- //Trabajo 1 Laboratorio Algoritmos y estructura de datos#include<iostream>#include<string>#include<fstream>#include<string>#include<stdlib.h>#include<conio.h>using namespace std; int main (){    char nombrearchivo[50],a,palabra[30],palabragen[30],repetido,palabraaux[30],letra[1],salcont[1];    int n,contadorletras,i,q,w,e,u,k,t,m,x;    bool marcador;    ifstream archivo;    while(m!=0)    {        nombrearchivo[0]='';        salcont[0]='.';        marcador=0;        n=0;        k=0;        u=0;        q=0;        i=0;        n=0;        w=1;        x=0;        cout<<"Bienvenido al ahorcado, porfavor indique su opción"<<endl<<endl;        cout<<"1.-"<<'t'<<"Jugar al ahorcado (por defecto)"<<endl;        cout<<"0.-"<<'t'<<"Salir del programa"<<endl;        cin>>m;        system("cls");        switch(m)        {            case 1:            {                cout<<"Ingrese el nombre del archivo a trabajar"<<endl;                cin>>nombrearchivo;                system("cls");                archivo.open(nombrearchivo);                while(salcont[0]!='-')                {                    archivo.get(a);                    palabra[n]=a;                    if (palabra[n]==' ')                        palabra[n]='n';                    palabragen[i]=palabra[n];                    palabraaux[i]=palabra[n];                    if ((palabra[n]=='n' && i>=3 && i<=7) || archivo.eof())                    {                        if (i==0)                        {                            salcont[0]='-';                            break;                        }                    for(q=0;q<i;q++)                        palabraaux[q]='-';                    for(q=i;q<=30;q++)                        palabraaux[q]=' ';                    cout<<"Ingresa una letra para adivinar la palabra y salvar al hombre de ser ahorcado. Guiate por la pista"<<endl<<endl;                    cout<<endl<<"La palabra tiene "<<i<<" letras."<<endl;                    if(i==0)                        salcont[0]=='-';                    system("pause");                    while(u<6)                    {                        system("cls");                        cout<<"Acertadas: "<<k<<" de "<<i;                        cout<<endl<<endl<<palabraaux<<endl;                        q=0;                        letra[0]=getche();                        while(q<i)                        {                            e=0;                            t=0;                            if(palabraaux[q]==letra[0])                            {                                while(t<=i)                                {                                    while(e<=i)                                    {                                        if(palabraaux[e]==letra[0])                                        {                                            cout<<endl<<"La letra "<<letra[0]<<" ya se encuentra ingresada"<<endl<<"Ingrese otra letra"<<endl;                                            t=0;                                            letra[0]=getche();                                        }                                        else                                            t++;                                    e++;                                    }                                e=0;                                }                            }                            if (palabragen[q]==letra[0])                            {                                system("cls");                                palabraaux[q]=palabragen[q];                                k++;                                cout<<endl<<endl<<palabraaux<<endl;                                marcador=1;                             //marcador indica si le acerto a la palabra, asi no perderá una oportunidad. Por defecto está en 0 a menos que acierte                            }                            else                            {                                system("cls");                                cout<<endl<<endl<<palabraaux<<endl;                            }                        q++;                        }                    if(marcador==0)                        u++;                    marcador=0;                    if(u>=6)                    {                        cout<<"Ha perdido, suerte a la proxima."<<endl;                        salcont[0]='-';                        system("pause");                        system("cls");                        break;                    }                    if(k==i)                    {                        cout<<"Felicidades, ha acertado la palabra. Para continuar jugando, ingrese cualquier tecla. Para salir del juego presione -"<<endl;                        cin>>salcont;                   //salcont saldrá del programa si el usuario presiona -                        if(salcont[0]=='-')                            break;                        system("cls");                        u=6;                    }                    if(salcont[0]=='-')                        break;                    }                    i=-1;                        k=0;                    if(salcont[0]=='-')                        break;                    }                else if (palabra[n]=='n')                    i=-1;                if(salcont[0]=='-')                    break;                i++;                q=0;                e=0;                w=1;                u=0;                k=0;                e=0;                n=0;                }                archivo.close();            }            case 2 :                {                    m=2;                    cout<<"hola";                    break;                }            default: 1;        }    }    cout<<"Gracias por jugar"<<endl;;}  
Aqui hay unas palabras para probar. Es cosa de copiar y pegar en un archivo y ponerlo en el programa, por si alguien quiere probarlo


--- Código: Text ---estaesunaprimerapruebabasicamenteparaprobartodaslasopciones 

Porfavor, les agradeceria ayuda. De verdad no entiendo por que en vez de continuar el programa vuelve al menu a la hora de pedir el archivo la segunda vez. Muchas gracias

Eternal Idol:
Depuralo ... igual algo que seguramente esta mal es la linea 65, estas usando == y eso no hace nada.

VC++: x.cpp(65) : warning C4553: '==' : operator has no effect; did you intend '='?

Claudisimo:
Sip, esa linea estaba mal. Aun asi, el problema continua

m0skit0:
Inicializa el valor de m...

Claudisimo:
Verdad, se me había pasado eso, sin embargo lo hice y sigue con el mismo problema

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa