1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[C] Contar tempo desde getch()

Discussão em 'Programação' iniciada por fabio.silva, 3 de Março de 2009. (Respostas: 2; Visualizações: 2098)

  1. fabio.silva

    fabio.silva Power Member

    Cumps,
    estive aqui a tentar fazer um programa que, após um tempo aleatório, mandasse carregar numa tecla, e contar quanto tempo demorou desde que apareceu a mensagem.
    Uma parte eu já consegui,pelo menos a do tempo aleatório.
    Deixo aqui o "trecho" ::007:
    Código:
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #include<conio.h>
    #include<Windows.h>
    clock_t tInicio, tFim, tDecorrido;
    int conta()
    {
    tInicio = clock();
    tFim = clock();
    tDecorrido = ((tFim - tInicio) / (CLOCKS_PER_SEC/1000) );}
     
    main()
    {
    int t,x;
    srand(time(NULL));
    t=rand()%10000+1;
     
    printf("Prepare-se...");
    for(int y=0;y<10;y++) {Sleep(t); printf("\nagora!!"); tInicio;if(x=getch()!=0) tFim; printf("\ndemorou %5d milissegundos", tDecorrido);}
    system("pause");
    return 0;
    }
    
    Quando compilo e executo, o tempo em milissegundos dá-me sempre 0 :(
    Obrigado


    EDIT: Consegui resolver,ficou assim:
    Código:
    clock_t tInicio, tFim, tDecorrido;
    int conta()
    {
     
    tDecorrido = ((tFim - tInicio) / (CLOCKS_PER_SEC/1000) );
    }
     
    main()
    {
    int t,x;
    srand(time(NULL));
    t=rand()%10000+1;
    
    printf("Prepare-se...");
    for(int y=0;y<10;y++) {Sleep(t); printf("\nagora!!"); tInicio=clock();if(x=getch()!=0) tFim=clock();conta(); printf("\ndemorou %5d milissegundos", tDecorrido);}
    system("pause");
    return 0;
    }
    
    Mas se por acaso conhecerem uma maneira melhor de fazer isto, não hesitem:x2:
     
    Última edição pelo moderador: 4 de Março de 2009
  2. Esse teu código gera, de facto, um sleep aleatório, mas todos os 10 "pedidos" têm o mesmo sleep time.
    Se quiseres que a cada "pedido" este sleep seja diferente do anterior, faz da seguinte forma:

    Código:
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <conio.h>
    #include <windows.h>
     
    int main()
    {
    	int t0, tf, y;
    
    	printf("Prepare-se...");
    	
    	for(y = 0; y < 10; y++)
    	{
    		srand(time(NULL));
    		Sleep(rand() % 10000 + 1);
    		printf("\nagora!!");
    		t0 = clock();
    		_getch();
    		tf = clock();
    		printf("\ndemorou %5d milissegundos", tf - t0);
    	}
    	
    	system("pause");
    
    	return 0;
    }
     
  3. fabio.silva

    fabio.silva Power Member

    Claro, declarar o rand() dentro do for para gerar um nº diferente cada vez que o ciclo repete-se. Bem pensado, obrigado:x2:
     

Partilhar esta Página