Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    cin senza invio e senza bloccare il programma

    Devo fare un programma che deve visualizzare il tempo trascorso dall'avvio, una specie di cronometro. Ovviamente devo aggiornare secondo in continuazione la schermata, per questo faccio un system("cls"), però voglio far si che quando mi sono stufato di cronometrare spinga un tasto qualsiasi e automaticamente il programma finisce, se metto un cin>> questo mi blocca il rpogramma e quindi non si aggiorna più secondo per secondo, come posso fare?

    Grazie
    ALLA GUERRA!!!

  2. #2

  3. #3
    Utente bannato
    Registrato dal
    Apr 2008
    Messaggi
    196
    metti un system("pause) e come istruzione successiva return 0 ..

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Dark_Limit
    metti un system("pause) e come istruzione successiva return 0 ..
    Ma cosa c'entra?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    lavoro su windows, vi mando il codice, è meglio. il programma è un pò diverso da come l'ho descritto.

    codice:
    #include <stdafx.h>
    #include <ctime>
    #include <iostream>
    #include <cstdlib>
    using namespace std;
    
    void orologio (time_t &, int &, int &); // clock del programma
    
    int main()
    {
    	time_t tempo;
    	tempo=time(NULL); // presa del tempo iniziale
    	int minute=0; // minuti
    	int hour=7; // ore
    	
    	struct utente //struttura di ogni utente
    	{
    		time_t arrivo; //il tempo di arrivo
    		int minuti; // il tempo che ci vuole a servire
    		utente * info; // parte informativa
    	};
    	utente* testa; // puntatore di testa
    	bool stato=0; //0 vuota ; 1 non vuota
    	
    	cout<<hour<<":"<<minute;//visualizzazzione del primo orologio
    	
    	do
    	{
    		orologio(tempo, minute, hour);
    	}while(hour!=10);
    	return 0;
    }
    
    void orologio (time_t & tempo, int & minute, int & hour)
    {
    	time_t trascorso;
    	trascorso=time(NULL);
    	if(trascorso-tempo==60)
    	{
    		minute++;
    		tempo=time(NULL);
    		if(minute==60)
    		{
    			hour++;
    		}
    		system("cls");
    		cout<<hour<<":"<<minute;
    	}
    }
    Implementerò una cosa sulla memoria heap, è una simulazione di coda dal meccanico, si mette l'orario d'arrivo dell'utente, si mette in coda e si stima + o - quanto tempo ci vuole a riparare la macchina, l'orario di lavoro è alle 7 di mattina e il programma dovrebbe girare 10 ore nostop fino alle 17, ho già implementato il clock, detro il do-while dovrò mettere lo switch per tutte le utilità che ha questo programma però se mettessi nel menu di scelta un cin>> (che sarà l'intero che lo switch analizzerà) ovviamente il refresh dell'orologio che avviene ogni minuto si bloccherebbe nell'attesa dell'immissione.
    ALLA GUERRA!!!

  6. #6
    Utente bannato
    Registrato dal
    Apr 2008
    Messaggi
    196
    Se non ho capito male devi usare la funzione GetAsyncKey() che legge un buffer da tastiera..(magari la metti in un ciclo)..dopo la chiave letta termini il programma con return 0(se sei in una funzione terminerebbe solo quella) in codesti casi usa return -1;

    @oregon invece di obiettare la mia soluzione precedente che è apparentemente giusta solo che nn è legata al problema di richiesta potevi dare la soluzione..

  7. #7
    GetAsyncKey()

    potete cortesemente spiegarmi come funziona e che parametri devo passargli, che tipo di libreria devo includere....

    grazie
    Mi siete stati davvero utilissimi.
    ALLA GUERRA!!!

  8. #8
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    ma invece di usare system("cls") perché nn provi con cout<<"\r"<<hour<<":"<<minute; ?

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Anche se non e' standard puoi usare la kbhit

    #include <conio.h>

    int k;

    k=kbhit();
    if(k==0) ...

    P.S. Dark ... ti ho solo chiesto a cosa servisse il suggerimento che hai dato ... potro' fare una obiezione se vedo che c'e' un qualcosa che non va? Se devo dare una soluzione o meno, poi, e' un altro affare ...

    P.P.S. Non per obiettare ma per amore di verita' ... la GetAsyncKey non esiste ... semmai c'e' la GetAsyncKeyState che trovi documentata in

    http://msdn.microsoft.com/en-us/libr...93(VS.85).aspx

    P.P.P.S. Sempre per capire, sto ancora attendendo un chiarimento sulla questione dei puntatori ... ma se ritieni che sia troppo curioso, non rispondere ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    questa funzione rileva se viene utilizzata la tastiera, però dove salva il valore digitato?
    ALLA GUERRA!!!

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 © 2025 vBulletin Solutions, Inc. All rights reserved.