PDA

View Full Version : [C++] visualizzare incremento di un numero [contatore]


Albitexm
10-04-2011, 20:37
Io voglio che tutte le volte che la variabile x assume un certo valore, visualizzare l'incremento della variabile i (int i++).
Mi spiego meglio:
se io scrivo cout<<"x="<<i; per i da 1 a 10, avrò 10 visualizzazioni x=n. Io invece voglio avere solo una visualizzazione di "x=", e una sola visualizzazione di "i", che cambia ogni volta che s'incrementa, fino ad arrivare a 10.
_____
Nota per gli amministratori: avevo già trovato un post su questo forum che spiegava bene l'argomento (un contatore temporizzato) e l'avevo salvato. Ma ho fatto una ricerca e non riesco a trovarlo nel forum e nemmeno nelle mie cartelle :boh: sorry

Albitexm
11-04-2011, 00:18
Forse girando su google ho trovato una soluzione. Si potrebbe usare l'istruzione system ("cls") che cancella lo schermo. Esempio di contatore fino a 10:

int i=0;for (i;i<10;i++)

{

system("cls");

cout<<endl<<i<<endl;

cin>>x;

}

l'input "cin>>x; serve solo per fare avanzare il contatore quando premo un tasto numerico. Applicando il concetto di questo esempio al mio codice, in pratica ogni volta che la mia variabile assumerà un valore determinato, io cancellerò lo schermo e riscriverò il valore del contatore. Potrebbe essere una soluzione.

Ma domanda: io l'istruzione "system ("cls")" lo trovata in un codice online. In precedenza conoscevo solo "system("pause")" per mettere in pausa fino alla pressione di un tasto. Deduco che probabilmente ci saranno altre "opzioni" di dichiarazione da scrivere nella parentesi dopo "system". Dove trovo i vari riferimenti?

banryu79
11-04-2011, 08:12
Ma domanda: io l'istruzione "system ("cls")" lo trovata in un codice online. In precedenza conoscevo solo "system("pause")" per mettere in pausa fino alla pressione di un tasto. Deduco che probabilmente ci saranno altre "opzioni" di dichiarazione da scrivere nella parentesi dopo "system". Dove trovo i vari riferimenti?

System è una funzione dichiarata nell'header cstdlib (stdlib.h).
System invoca il command processor passandogli come comando l'argomento che a sua volta riceve sottoforma di "C string" (const char *).
Ovviamente invocare system su un sistema windows è diverso che invocarla su un sistema *nix, perchè entrano in ballo differenti command processor.

Di conseguenza system non documenta i comandi che può ricevere; potrebbe anche ricevere il comando "pippo" se sotto i piedi ci fosse un command processor che lo riconosce come comando valido.
Se vuoi vedere i comandi che puoi passare al command processor di Windows, ad esempio, consulta la lista di comandi supportati da cmd.exe

darksax
11-04-2011, 08:40
Al posto della system(), puoi utilizzare un'altro sistema giocando con i caratteri di controllo...
1) Inviare un Carriage Return (\r) e riscrivi la riga sovrapponendola alla precedente
2) Inviare dei BackSpace (\b) prima di stampare il nuovo numero cancellando il numero precedente prima di riscriverlo

Ciao

Albitexm
11-04-2011, 13:59
Al posto della system(), puoi utilizzare un'altro sistema giocando con i caratteri di controllo...
1) Inviare un Carriage Return (\r) e riscrivi la riga sovrapponendola alla precedente
2) Inviare dei BackSpace (\b) prima di stampare il nuovo numero cancellando il numero precedente prima di riscriverlo

Ciao

Grazie. In effetti sul testo di C++ che consulto, c'è un elenco di caratteri di escape. Ma non vengono spiegati. C'è un esempio in cui vengono usati due di questi caratteri di escape, su dieci dell'elenco. Come al solito è difficile trovare dei libri veramenti completi in un settore tecnico.
Mi sa che mi conviene scrivere un piccolo codice, e poi provare tutti questi caratteri di escape per capirne l'uso.

Albitexm
11-04-2011, 14:15
System è una funzione dichiarata nell'header cstdlib (stdlib.h).
Se vuoi vedere i comandi che puoi passare al command processor di Windows, ad esempio, consulta la lista di comandi supportati da cmd.exe
Ok, quindi dipende dal sistema operativo. Mi sto accorgendo, man mano che mi addentro nel mondo della programmazione,che non è completamente vero, che l'uso dei linguaggi evoluti è indipendente dall'ambiente in cui si userà il programma. Mi sembra di capire, che per scrivere un buon programma, tenendo conto delle prestazioni , della compatibilità e delle interazioni con l'ambiente esterno è necessario avere una minima infarinatura di hardware,sistemi operativi e compilatori. La portabilità non è poi così universale. Questo oggi, non voglio pensare cosa succedeva agli albori dell'informatica, anni70/80, quando non c'erano ancora degli standar unificati..

darksax
11-04-2011, 16:55
Ok, quindi dipende dal sistema operativo. Mi sto accorgendo, man mano che mi addentro nel mondo della programmazione,che non è completamente vero, che l'uso dei linguaggi evoluti è indipendente dall'ambiente in cui si userà il programma. Mi sembra di capire, che per scrivere un buon programma, tenendo conto delle prestazioni , della compatibilità e delle interazioni con l'ambiente esterno è necessario avere una minima infarinatura di hardware,sistemi operativi e compilatori. La portabilità non è poi così universale. Questo oggi, non voglio pensare cosa succedeva agli albori dell'informatica, anni70/80, quando non c'erano ancora degli standar unificati..

diciamo che negli anni 80/90 era importante avere un buon bagaglio di esperienza e fantasia ( detto anche manico&pazzia)....
Oggi l'importante e' aderire a delle asettiche "linee guida" scritte da qualche multinazionale.
Allora mi divertivo (e mi incavolavo) tanto. :)
Oggi, forse e' piu' facile, ma mi diverto molto di meno!!! :mad:

PS okkio che alcuni caratteri di controllo fra *nix/win possono avere effetti differenti...