Alguien me puede decir porque no hace una donde pausa donde debería. (este es solo un pedazo del código)
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int mesa;
for(;;){
cout<<"Ingrese el mes actual"<<endl;
cin>>mesa;
if(mesa>=1 && mesa<=12) break;
else{
cout<<"El mes que ingreso no es valido, inrese un dato valido"<<endl;
cout<<"Presione enter para continuar"<<endl;
cin.peek(); //Aqui debería haber una pausa pero no lo hay ero no lo hay
system("cls");
}
}
system("PAUSE");
return 0;
}
No entiendo, que no te funciona?
Saludos
en donde esta el cin.peek(); no pausa el programa.
prueab cin.get();
lo mismo, cin.get da lo mismo
Cita de: djdac3 en 22 Septiembre 2012, 21:25 PM
lo mismo, cin.get da lo mismo
entonc3s seran los includes voy a ver
lo acavo de comprovar y ami me va sino prueba a usar system("PAUSE"); como lo tienes mas adelante
con system("PAUSE"); si sirvió, gracias
no deberías usar llamadas al sistema así
No está mal, pero no te mal acostumbres
Cita de: тαптяαпсє en 22 Septiembre 2012, 21:31 PM
no deberías usar llamadas al sistema así
No está mal, pero no te mal acostumbres
si no le funcionaba lo otro no quedaba otra opcion, eso si tendria que ver por que no funciono.
PD:Vaya gif que tienes тαптяαпсє XD
He leido eso y no he podido evitar contestar, nunca useis system("PAUSE"), repito nunca, es llamar al sistema para hacer una pausa, como consejo es mejor que eviteis esa pausa, echadle un vistazo a las chinchetas, hay un post que habla sobre esto.
una pregunta, es que como yo aprendo por mi cuenta sin uni pues hay cosas que me salto para que sirve los ;; de
for(;;)
gracias
PD:
Cita de: Caster en 22 Septiembre 2012, 21:34 PM
He leido eso y no he podido evitar contestar, nunca useis system("PAUSE"), repito nunca, es llamar al sistema para hacer una pausa, como consejo es mejor que eviteis esa pausa, echadle un vistazo a las chinchetas, hay un post que habla sobre esto.
por que no se tenia que usar? creo que era por que hacia correr al programa lento y tenia menos compatibilidad
el system("PAUSE"); es el ultimo recurso, ya que probé con cin.peek, cin.ignore, get.char, ninguno me sirvió y no se porque.
los ;; en el for es para que sea un ciclo infinito
Hola
Cita de: djdac3 en 22 Septiembre 2012, 21:36 PM
el system("PAUSE"); es el ultimo recurso, ya que probé con cin.peek, cin.ignore, get.char, ninguno me sirvió y no se porque.
los ;; en el for es para que sea un ciclo infinito
No programo en C++ ni en Windows, para hacer una pausa o "bloquear" la ejecución tienes la función sleep, el tiempo se define en segundos.
Un saludo
P.D: Yo no pondria un for, lo dejaria así:
while (1) {
//codigo
}
No se pausa porque con cin>>mesa;
dejas "basura" en el buffer del teclado, y cin.peek();
en este caso lo que hace es limpiar dicho buffer. Para solucionarlo, solo tienes que poner dos veces cin.peek();
(u otro similar). El primero limpiará el buffer, y el segundo pausará el programa.
Un saludo.
Prueba con este:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int mesa;
for(;;){
cout<<"Ingrese el mes actual"<<endl;
cin>>mesa;
if(mesa>=1 && mesa<=12) break;
else{
cout<<"El mes que ingreso no es valido, inrese un dato valido"<<endl;
cout<<"Presione enter para continuar"<<endl;
cin.get();
cin.get();
system("cls");
}
}
cin.get();
return 0;
}
Cita de: cpu2 en 22 Septiembre 2012, 22:50 PM
Hola
No programo en C++ ni en Windows, para hacer una pausa o "bloquear" la ejecución tienes la función sleep, el tiempo se define en segundos.
Un saludo
P.D: Yo no pondria un for, lo dejaria así:
while (1) {
//codigo
}
En code::blocks (y me supongo que mas compiladores) da lo mismo poner una cosa que otra porque genera el mismo código ensamblador:
Con while:
MOV DWORD PTR SS:[ESP+C],0
MOV DWORD PTR SS:[ESP+8],0
MOV DWORD PTR SS:[ESP+4],0
MOV DWORD PTR SS:[ESP],0
CALL <JMP.&USER32.MessageBoxA>
SUB ESP,10
JMP SHORT bucle_wh.0040132E
Con for:
MOV DWORD PTR SS:[ESP+C],0
MOV DWORD PTR SS:[ESP+8],0
MOV DWORD PTR SS:[ESP+4],0
MOV DWORD PTR SS:[ESP],0
CALL <JMP.&USER32.MessageBoxA>
SUB ESP,10
JMP SHORT bucle_wh.0040132E
El equivalente en C
While:
#include <windows.h>
int main()
{
while(1)
{
MessageBoxA(0,0,0,0);
}
return 0;
}
for:
#include <windows.h>
int main()
{
for (;;)
{
MessageBoxA(0,0,0,0);
}
return 0;
}
saludos!
Hola mDrinky, gracias por el dato, esto me viene bien por que estoy empezando con ASM.
Solo dije eso porque for se suele utiliza para bucles definidos, ya sabes iniciación de la variable, condición, incremento o decremento, por eso me parecio más correcto para un bucle infinito usar while. Como genera lo mismo ya veo que no es importante.
P.D: GCC me genero exactamente lo mismo.
Un saludo
Cita de: cpu2 en 23 Septiembre 2012, 16:25 PM
Hola mDrinky, gracias por el dato, esto me viene bien por que estoy empezando con ASM.
Solo dije eso porque for se suele utiliza para bucles definidos, ya sabes iniciación de la variable, condición, incremento o decremento, por eso me parecio más correcto para un bucle infinito usar while. Como genera lo mismo ya veo que no es importante.
P.D: GCC me genero exactamente lo mismo.
Un saludo
Sí, en realidad casi nadie en C usaría un for para hacer un bucle infinito. De hecho queda asta feo, no?. Pero cosas como estas demuestran que no siempre un código bonito en C pueda funcionar mejor que un código feo :D
un saludo!