Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    aggiornamento console in c

    Ciao a tutti!!
    Qualche tempo fa ho imparato il c e adesso ho l'occasione di sviluppare qualche applicazione utile. Non ho particolari difficoltà ma non riesco a capire una cosa.

    Come si fa a far aggiornare la console? Per dire...
    se io voglio scrivere una percentuale che aumenta es 20% 30% etc ma sempre nello stesso punto della console come devo fare?
    Per spegarmi meglio, io non voglio un output così "10%20%30%40%50%" ... "90%100%", voglio che ci sia sempre la stessa percentuale che si aggiorna

    Il manuale del c che ho acquistato non spiega questa cosa.. c'è un carattere particolare per fare passi indietro nella console? Ho notato movimenti in avanti e indietro del cursore in alcuni programmi dove si aggiorna la percentuale...

    Grazie mille!!

    Ciao!!!
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  2. #2
    Utente bannato
    Registrato dal
    Nov 2003
    Messaggi
    558
    Semplicemente crei una pausa e pulisci lo schermo tra una percentuale e l'altra

    In pratica:

    codice:
    #include <stdio.h>
    #include <windows.h> /*Per Sleep () */
    #include <stdlib.h> /*Per system () */
    
    main ()
    
    {
    
    printf ("10%") ;
    Sleep (1) ;
    system ("cls") ;
    
    printf ("20%") ;
    Sleep (1) ;
    system ("cls") ;
    
    /*E vai avanti così fino a 100%*/
    
    getch () ;
    
    }
    in paratica Sleep (n) --che si scrive con la S maiuscola-- rallenta il programma per n secondi

    system ("cls") pulisce lo schermo in modo di dare l'impressione che la console si "aggiorni"


  3. #3
    sbaglio o in questo modo mi devo ristampare tutta la console ogni volta?
    precisazione
    Con console intendo tutto il testo che ho stampato prima.
    Non esiste un modo differente?

    cmq Grazie mille!
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  4. #4
    Ma guardate quanto sono bravo :adhone:
    codice:
    #include <iostream>
    #include <unistd.h>
    using namespace std;
    
    int main (int argc, char *argv[]) {
    	for (int i = 1; i < 101; i++) {
    		cout << i << '%' << flush;
    		sleep (1);
    		if ( i < 10 ) {
    			cout << (char)8 << (char)8;
    		} else if ( i < 100 ) {
    			cout << (char)8 << (char)8 << (char)8;
    		}
    	}
    
    	return 1;
    }

  5. #5
    uhm...
    Per essere bravo sei bravo e non ho dubbi :tongue:
    Mi permetto quindi di abusare della tua bravura :quipy:

    cout non è contemplato nel mio manuale c, so che è una novità introdotta dal c++, sempre che non mi sbagli cmq credo di aver capito come funziona. Mi spieghi la funzione del flush finale in

    cout << i << '%' << flush;

    ?

    e poi il (char)8 che stampi? presumo sia il carattere ASCII n8, che funzione ha?

    Grazie!!

    Ciao!!
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

  6. #6
    Originariamente inviato da IroN@xiD
    uhm...
    Per essere bravo sei bravo e non ho dubbi :tongue:
    Mi permetto quindi di abusare della tua bravura :quipy:
    Era una battuta :gren:

    cout non è contemplato nel mio manuale c, so che è una novità introdotta dal c++, sempre che non mi sbagli cmq credo di aver capito come funziona. Mi spieghi la funzione del flush finale in

    cout << i << '%' << flush;

    ?

    e poi il (char)8 che stampi? presumo sia il carattere ASCII n8, che funzione ha?

    Grazie!!

    Ciao!! [/B]
    Conosco meglio il cout e il cin che non lo scanf e il printf... Ti so dire cosa fanno quelle funzioni in c++, non come portarle in c...

    Il flush dice di scrivere subito l'output...
    Quando si usa la funzione cout, i parametri non vengono stampati subito, ma vengono accodati per essere stampati in un secondo momento (lo decide il compilatore quando), oppure quando l'utente decide di stamparli con la funzione flush.
    Se non mettessi "flush", ciò che voglio stampare verrebbe stampato dopo lo sleep e così il programma non funzionerebbe...
    Non so se anche il printf accoda l'output e lo stampa quando gli pare, o se stampa subito...

    Il carattere ascii 8 è il backspace (cancella l'ultimo carattere)... Se ci mettevo:
    codice:
    cout << 8;
    mi stampava il numero 8, facendo invece il cast, stampo il carattere 8... In questo caso col printf basterebbe dire di stampare un carattere:
    codice:
    printf ( "%c", 8 ); // spero sia corretto

  7. #7
    Mi sono accorto che c'avevo messo un pò di boidate
    Innanzitutto invece che stampare il carattere 8 è meglio stampare il carattere 13 che torna a inizio riga (il carattere 8 usalo se la percentuale non è a inizio riga, ma è in un altro punto)
    Poi ho scoperto il modo di flushare con il c:
    fflush(stdout);
    Come ultima cosa invece che usare la funzione sleep, ho usaro la funzione usleep così il ciclo dura molto meno (se no ci si sta un quarto d'ora )...

    Ecco il programma portato in C
    codice:
    #include <stdio.h>
    #include <unistd.h>
    
    int main (int argc, char *argv[]) {
    	int i;
    	for (i = 1; i < 101; i++) {
    		printf ( "%i%%", i);
    		fflush(stdout);
    		usleep (50000);
    		if ( i < 100 ) {
    			printf ( "%c", 13 );
    		}
    	}
    
    	return 1;
    }

  8. #8
    Mitico
    Oltre a essere bravo sai anche spiegare benissimo!

    Grazie mille!!!

    Ciaooo!!
    Lungo le due rive del fiume gelato si stendeva la cupa e tetra foresta di abeti, dai quali il vento aveva appena spazzato il manto di brina. Nella luce crepuscolare quegli abeti neri e sinistri sembravano inclinarsi l'uno verso l'altro. Un silenzio minaccioso incombeva sul paesaggio, privo di qualsiasi segno di vita o di movimento, e desolato e freddo al punto da non poter ispirare che un solo sentimento: quello della più triste malinconia. E nello stesso tempo pareva che da quel paesaggio trapelasse una specie di riso, un riso ben più spaventoso di qualsiasi malinconia o tristezza, un riso tragico, come quello di una sfinge, un riso agghiacciante più della brina e che rammendava l'incombere minaccioso dell'ineluttabile. Era la saggezza potente e impenetrabile dell'eternità che irrideva alla vita, alla sua futilità e agli sforzi degli uomini.

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.