Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [c++] ciclo while

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    107

    [c++] ciclo while

    ciao a tutti

    mi serve fare un ciclo che continui a fare delle operazioni e che si fermi quando da tastiera viene premuto un tasto (ad esempio 's').
    Avevo pensato ad una cosa del genere:

    char var_stop=NULL;
    do
    {
    // operazioni..
    // ...

    if(getchar())
    {var_stop = getchar();}

    }while(var_stop !='s');

    il problema e' che cosi' devo premere due volte s e poi enter per farlo uscire dal ciclo; inoltre le operazioni me le fa solo quando premo un tasto e poi enter, non in continuazione come vorrei io..

    io non lo vedo ma e' un errore stupido, vero??
    grazie e ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    la questione è 1 po' complicatuccia..ovvero
    cosa vorresti fare??

    esegue le operazioni e ASPETTA
    che venga premuto un tasto e controlla se è
    una 's', in tal caso esce oppure appna viene premuta
    la 's' èsce.... :-|


    lo devi sviluppare su dos o win32console?

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    107
    per la seconda domanda: win32console

    quello che vorrei:
    esegue le operazioni controlla se e' stato premuto un tasto: se non e' stato premuto niente o se e' stato premuto un tasto diverso da 's' fa ancora le operazioni; poi ripete il controllo fino a quando viene premuto 's' e a quel punto esce da ciclo..

    quello che fa e':
    fa le operazioni e aspetta che venga premuto un tasto; se premo due volte 's' esce se no ripete le operazioni..

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    x quello che chiedi te, ti serve un
    programma multi-thread che verifichi lo stato
    dei tasti... e intanto l'altro therad
    fa le operazioni che deve fare...


    ai tempi del dos e quando si potevano
    usare gli interrupt era un'altra storia

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    cmq sia in genarale devi usare


    l'api "ReadConsoleInput"
    poi verifichi che l'evento sia 1 tasto

    se (buffer[i].EventType == KEY_EVENT)
    quindi se (buffer[i].Event.KeyEvent == tasto che vuoi)
    esci...

    insomma una cosa cosi..


    prima sullo std in
    devi settare di ricevere
    gli eventi da tastiera...

    SetConsoleMode( std_in_gettato, tipo_di_eventi );

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    107
    mi hanno detto di usare _kbhit() e ho risolto cosi':

    #include <conio.h>
    #include <stdio.h>

    void main( void )
    {
    while( !_kbhit() || _getch()!='s' )
    {
    _cputs( "Hit me!! " );
    }
    printf( "\nFINE\n" );
    }

    grazie e ciao!!

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.