Programación General > C/C++

 Programa retorna al menu despues de intentar usarlo 2 veces

<< < (2/2)

Claudisimo:
He descartado muchas cosas. Creo que el problema está en que la segunda vez que se abre un archivo comienza a leerlo desde el final. Hay alguna forma de indicar (tomando en cuenta que el archivo está abierto de la forma archivo.open(nombrearchivo)) que lea el archivo desde el principio??

Claudisimo:
Solucionado, declarando el ifstream dentro del ciclo arregló el problema. Efectivamente la variable archivo estaba provocando todo.

En todo caso me gustaría entender por que. Creo que despues comenzó a leer los archivos desde el final... pero nose. Aquí está el programa ya listo.


--- Código: C++ ---#include<iostream>#include<string>#include<fstream>#include<string>#include<stdlib.h>#include<conio.h>#include<stdio.h>using namespace std; char mayusculas(char letra);    //Transforma mayusculas en minusculasvoid dibujo(int oportunidades); //Muestra el dibujo del ahorcado int main (){    char nombrearchivo[50],a,palabra[30],palabragen[30],palabraaux[30],letra[1],salcont[1];    int n,i,q,w,e,u,k,t,m,x;    bool marcador;    m=1;    while(m!=0)    {        ifstream archivo;        salcont[0]='.';        marcador=0;        n=0;        k=0;        u=0;        q=0;        i=0;        n=0;        w=1;        x=0;        m=1;        cout<<"Bienvenido al ahorcado, porfavor indique su opcion"<<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);                    if (a>='A' && a<='Z')                        a=mayusculas(a);                    palabra[n]=a;                    if (palabra[n]==' ')                        palabra[n]='n';                    palabragen[i]=palabra[n];                    palabraaux[i]=palabra[n];                    if (palabra[n]=='n' || palabra[n]==' ')                    {                        if(i<3 || i>7)                        {                            cout<<"La palabra "";                            while(q<i)                            {                                cout<<palabraaux[q];                                q++;                            }                            cout<<"",ubicada en el archivo, esta fuera de rango"<<endl;                            system("pause");                            system("cls");                        }                    }                    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<<endl;                            cout<<endl<<endl<<palabraaux<<endl;                            dibujo(u);                            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;                                                marcador=1;                                                letra[0]=getche();                                            }                                            else                                                t++;                                            e++;                                        }                                        e=0;                                    }                                }                                if (palabragen[q]==letra[0])                                {                                    system("cls");                                    cout<<"Acertadas: "<<k<<" de "<<i<<endl;                                    palabraaux[q]=palabragen[q];                                    k++;                                    cout<<endl<<endl<<palabraaux<<endl;                                    dibujo(u);                                    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;                                    dibujo(u);                                }                            q++;                            }                        if(marcador==0)                            u++;                        marcador=0;                        if(u>=6)                        {                            system("cls");                            cout<<"Acertadas: "<<k+1<<" de "<<i<<endl;                            cout<<endl<<endl<<palabraaux<<endl;                            dibujo(u);                            cout<<endl<<"Ha perdido, suerte a la proxima."<<endl;                            salcont[0]='-';                            system("pause");                            system("cls");                            break;                        }                        if(k==i)                        {                            cout<<endl<<"Felicidades, ha acertado la palabra. Para continuar jugando, ingrese cualquier tecla. Para volver al menu presione -"<<endl;                            cin>>salcont;                   //salcont saldrá del programa si el usuario presiona -                            if(salcont[0]=='-')                                break;                            system("cls");                            u=7;                        }                        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();                break;            }            case 2 :                    break;            default: 1;        }    }    cout<<"Gracias por jugar ahorcado."<<endl;;} char mayusculas (char letra){    letra=letra+('a'-'A');    return letra;} void dibujo(int oportunidades){    if (oportunidades==0)    {        cout<<endl<<endl<<endl<<endl;        cout<<"                             #################"<<endl;        cout<<"                             #               #"<<endl;        cout<<"                             #               |"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                         #########"<<endl;    }    else if(oportunidades==1)    {        cout<<endl<<endl<<endl<<endl;        cout<<"                             #################"<<endl;        cout<<"                             #               #"<<endl;        cout<<"                             #               |"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #             *^ ^* "<<endl;        cout<<"                             #             * - *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                         #########"<<endl;    }    else if(oportunidades==2)    {        cout<<endl<<endl<<endl<<endl;        cout<<"                             #################"<<endl;        cout<<"                             #               #"<<endl;        cout<<"                             #               |"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #             *^ ^* "<<endl;        cout<<"                             #             * - *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                         #########"<<endl;    }    else if(oportunidades==3)    {        cout<<endl<<endl<<endl<<endl;        cout<<"                             #################"<<endl;        cout<<"                             #               #"<<endl;        cout<<"                             #               |"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #             *^ ^* "<<endl;        cout<<"                             #             * - *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #              **"<<endl;        cout<<"                             #             * *"<<endl;        cout<<"                             #            *  *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                         #########"<<endl;    }    else if(oportunidades==4)    {        cout<<endl<<endl<<endl<<endl;        cout<<"                             #################"<<endl;        cout<<"                             #               #"<<endl;        cout<<"                             #               |"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #             *^ ^* "<<endl;        cout<<"                             #             * - *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #              ***"<<endl;        cout<<"                             #             * * *"<<endl;        cout<<"                             #            *  *  *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                         #########"<<endl;    }    else if(oportunidades==5)    {        cout<<endl<<endl<<endl<<endl;        cout<<"                             #################"<<endl;        cout<<"                             #               #"<<endl;        cout<<"                             #               |"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #             *^ ^* "<<endl;        cout<<"                             #             * - *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #              ***"<<endl;        cout<<"                             #             * * *"<<endl;        cout<<"                             #            *  *  *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #              *"<<endl;        cout<<"                             #             *"<<endl;        cout<<"                             #            *"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                         #########"<<endl;    }    else if(oportunidades==6)    {        cout<<endl<<endl<<endl<<endl;        cout<<"                             #################"<<endl;        cout<<"                             #               #"<<endl;        cout<<"                             #               |"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #             *x x* "<<endl;        cout<<"                             #             * O *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #              ***"<<endl;        cout<<"                             #             * * *"<<endl;        cout<<"                             #            *  *  *"<<endl;        cout<<"                             #               *"<<endl;        cout<<"                             #              * *"<<endl;        cout<<"                             #             *   *"<<endl;        cout<<"                             #            *     *"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                             #"<<endl;        cout<<"                         #########"<<endl;    }}  
Gracias a todos

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa