Hola!! ;D
Estoy aprendiendo C++ y estuve viendo ejemplos de como usar el do-while y pues me he encontrado con este ejemplo:
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
bool salida = false;
int num;
int sec=2000;
do{
cout<<"\n ingrese un numero ";
cin>>num;
cout<<"Validando .";
for(int i = 0; i < 9; i++){
cout<<".";
Sleep(200);
}
if(num == 10) salida = true;
}
while(!salida);
return 0;
}
el programa lo que hace es verificar si el numero ingresado es 10 o no y al momento de imprimir "Validando" que valla saliendo un punto tras otro despacio, como si estuviera cargando...
se que es algo tonto, pero me gustaría saber una forma de que funcione asi en linux, alguna funcion que sustituya el Sleep(); o algo asi.
Aprovechando quiero preguntarles, hay alguna función importante en la librería windows.h? o solo sirven de adorno sus funciones?
Gracias. :D
Creo que :http://stackoverflow.com/questions/10918206/cross-platform-sleep-function-for-c
Podrías hacerlo con la biblioteca Time. Un poco bestia, pero podría ir bien:
//
#include <Time.h>
//
void time(int milisecs){
Time A = time();
while(time()<A+milisecs);
}
Cabe decir, que no creo que ese código funcione. Y esque nunca usé las variables de Time.h, así que no se bien la sintaxis, ni los retornos de sus funciones. Pero es la idea :D
En linux es con minúscula:
sleep(10);
Tienes que incluir la librería pthread.h y linkar con pthread
Cita de: minari02 en 30 Diciembre 2013, 20:55 PMAprovechando quiero preguntarles, hay alguna función importante en la librería windows.h? o solo sirven de adorno sus funciones?
Eso es la windows API. Te permite hacer tropecientas cosas:
http://msdn.microsoft.com/en-us/library/hh920509%28v=vs.85%29.aspx
Cita de: ivancea96 en 30 Diciembre 2013, 21:53 PM
Podrías hacerlo con la biblioteca Time. Un poco bestia, pero podría ir bien:
//
#include <Time.h>
//
void time(int milisecs){
Time A = time();
while(time()<A+milisecs); del reloj
}
Cabe decir, que no creo que ese código funcione. Y esque nunca usé las variables de Time.h, así que no se bien la sintaxis, ni los retornos de sus funciones. Pero es la idea :D
Eso no es la función sleep, eso es un asesinato de rendimiento.
Estás haciendo iteraciones
en cada ciclo. Ahora mismo estás chupando un hilo de ejecución entero.
De hecho, hay un sencillo progama para saturar la CPU que consiste en crear un bucle:
while(1);
Y tantos hilos de ejecución como núcleos tenga un procesador.
Cita de: amchacon en 31 Diciembre 2013, 09:37 AM
En linux es con minúscula:
sleep(10);
Tienes que incluir la librería pthread.h y linkar con pthread
Eso es la windows API. Te permite hacer tropecientas cosas:
while(1);
como es eso de linkiar? me podrias poner como quedaria el codigo final profavor?
Gracias! :)
#include <pthread.h>
int main()
{
sleep(3); //dormir 3 segundos
return 0;
}
Lo de linkar no tiene nada que ver con el código, sino con la configuración del compilador. Si usas algún IDE, busca alguna opción para "linker settings".