Autor Tema: Temporizador o crear retardo (delay) en C detener ejecución un tiempo (lenguajeC  (Leído 67782 veces)

Reno92

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Buenos días, me gustaría poder realizar un bucle while con un tiempo como factor de cierre del mismo bucle.

es decir,

while (t=40s){
 printf("Maravilla perdida");
}

Algo así.

Gracias y saludos,

« Última modificación: 09 de Septiembre 2016, 09:54 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

Generar retardos en un programa es algo poco habitual (y algunas personas piensan que poco recomendable). Normalmente si quieres mostrar un mensaje y no pasar a otra cosa lo que haces es pedirle al usuario que pulse una tecla para continuar.

Aún así si quisieras generar un retardo puedes intentarlo con la función delay. Ejemplo:

Código: [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
 
main()
{
printf("Maravilla perdida");
    printf("El programa terminará en 10 segundos.\n");       
 
    delay(10000);                         
 
    return 0;
}

O bien introduciendo un bucle que no haga nada (al poner el ordenador a contar, tarda un tiempo que es el retardo). Esto es una forma un poco bruta de hacerlo y en general no se recomienda pero hay quien lo hace.

Código: [Seleccionar]


#include<stdio.h>
 
main()
{
   int c = 1, d = 1;
 printf("Maravilla perdida");
   for ( c = 1 ; c <= 32767 ; c++ )
       for ( d = 1 ; d <= 32767 ; d++ )
       {}
 
   return 0;
}

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Reno92

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Buenas Krall,

He compilado el programa que me has enseñado y me da problemas con la función delay. El problema es que estoy usando el software de linux  ubuntu y la mitad de las librerias y funciones válidas para windows en linux no funcionan. Si pudieras asesorarme sobre las instalacion de complementos o cualquier consejo te lo agradecería.

Mira te muestro el programa,

#include<stdio.h>
#include<stdlib.h>
 
int main()
{
printf("Maravilla perdida");
    printf("El programa terminará en 10 segundos.\n");       
 
    delay(10000);                         
 
    return 0;
}
delay.c: In function ‘main’:
delay.c:33:5: warning: implicit declaration of function ‘delay’ [-Wimplicit-function-declaration]
/tmp/ccOiCXXE.o: En la función `main':
delay.c:(.text+0x28): referencia a `delay' sin definir
collect2: error: ld returned 1 exit status
Ha fallado la compilación.

Muchas gracias por la respuesta,
Saludos,
R

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Hola.

Me meto por aquí un poco.

Prueba usando la función Sleep().

Código: [Seleccionar]
#include <stdio.h>
#include <windows.h>
// para linux usar #include <unistd.h>
int main()
{
    int i = 0;
    printf("Maravilla perdida\n");
    printf("El programa terminara en 10 segundos.\n");
    for(i=0; i<10; i++){
        Sleep(1000);
        printf("%i\n", i+1);
    }

    printf("Pasaron los 10 segundos?");
    return 0;
}

Saludos.  ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".