Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    62

    [C] Conteggio del tempo

    Conoscete qualche istruzioni che consente di contare il tempo che trascorre?
    Mi spiego meglio, esponendo il mio problema:
    Devo fare inserire all'utente un parola, entro un tot di minuti.
    Purtroppo non finisce quì, perchè questa parola non la leggo mediante scanf(), ma la leggo lettera dopo lettera, mediante getch().
    Qualcuno mi saprebbe aiutare?



    P.S. Ho una idea ma non so se esiste la funzione per realizzarla:
    magari potrei utilizzare una certa funzione che conta quanto tempo passa fra l'esecuzione della riga 7 e l'esecuzione della riga 20......se poi il tempo è maggiore di quello che voglio concedere, ignoro l'inserimento (ma cmq lascio tutto il tempo che vuole l'utente, per inserire la parola).

  2. #2
    Con che precisione ti serve la misura? La precisione di un secondo va bene?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    62
    ma si....

  4. #4
    Io userei un thread che ogni secondo controlla se è stato inserito qualcosa, se dopo un tot di tempo non viene inserito niente visualizza una finestra (o comunque un messaggio) con scritto "Tempo Scaduto"!!

  5. #5
    Per misurare differenze di tempo puoi usare time(NULL) di <time.h>.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Non penso che il flusso di istruzioni si blocchi mentri usi la getch.
    Io per fermare il tempo ho sempre creato un while:

    codice:
    time_t t1,t2;
    t1=time(NULL);
    t2=t1+5;
    while(t1<t2)
      t2=time(NULL);
    Dovrebbe fermarsi per tre secondi.
    Se nel ciclo ci inserisi anche la getch dovrebbe andare.
    Un esempio col la getchar:

    codice:
    while(getchar()!=10&&t1<t2)
    {
       t2=time(NULL);
    }
    Non è testato,penso dovrebbe funzionare.
    Il ciclo finisce se il tempo scade oppure se l' utente fa in tempo a inserire la parola.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    62
    ho capito come utilizzare la funzione time(), e l'idea mi piace......ora però mi chiedo se c'è un modo (senza fare cicli), per far fisualizzare un countdown all'utente (col ciclo lo so fare, ma per i motivi citati nel primo post, non posso utilizzare un altro ciclo e come capirete, neanche il cilo che uso per il getch()).

  8. #8
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    Sisi,limitare il tempo di input.
    Il primo codice che ho scritto fa aspettare 5 secondi.
    va integrato nell' input,adesso non ho sperimentato,ma tu essendoci un ciclo while come questo:
    codice:
    while(c=getchar()!=10)
    {
       ....
    }
    per forzare l' uscita dal ciclo aggiungi la condizione che t2=t1.
    t1 cambia sempre,durante il ciclo prendi il tempo con t1=time(NULL),mentre t2 lo prendi prima del ciclo e decidi di quanti secondi farlo essere.

  9. #9
    La getc è bloccante, per cui dovresti avere un thread separato per la gestione del countdown, tuttavia non so quanto sia una buona idea usare la stessa console con output da due thread diversi. Forse ti devi reimplementare la getch tramite funzioni non bloccanti, che dipendono dalla piattaforma su cui stai lavorando.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente bannato
    Registrato dal
    Oct 2010
    Messaggi
    1,219
    In effetti il countdown potrebbe essere gestito da un altro processo secondo me anche facilmente.
    Con la funzione CreateProcess di windows.h dovresti create un processo che mostra il countdown,e il processo si ferma quando il countdown finisce.
    Compare una finestra piccola,se ho tempo poi provo a studiarci sopra che m' incuriosisce.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.