Programación General > C/C++
Programa retorna al menu despues de intentar usarlo 2 veces
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
[*] Página Anterior
Ir a la versión completa