PDA

View Full Version : [C]Effetto battitura


agente mm8
08-12-2008, 14:42
Salve, sto lavorando su un grosso programma in C, e ho bisogno di ricreare l'effetto battitura (la frase viene scritta un carattere alla volta), cioè se devo scrivere "ciao" prima scrive "c", poi "i", poi "a" e poi "o", e non tutto insieme.
Come posso fare?

royaleagle
08-12-2008, 14:49
Banalmente mettendo in pausa il programma (eventualmente utilizzando i thread se vuoi che continuino le altre elaborazioni) tra la stampa di un carattere ed il successivo.

agente mm8
09-12-2008, 13:40
Ok, ma dato che è da poco che programmo in C, come posso fare a mettere in pausa il programma?

|giacomo|
09-12-2008, 16:37
Il C non lo so ma in java e thread.sleep(millisecondi) se ti puo essere utile...magari e simile

Alex_87_xelA
09-12-2008, 17:03
una cosa di questo tipo ti va bene ?


#include <stdio.h>
#include <time.h>
#include <string.h>

void Aspetta( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}

int main()
{
char Stringa[] = "Ciao";

for(register unsigned int i = 0; i < strlen(Stringa); i++)
{
printf("%c", Stringa[i]);
Aspetta(250);
}

printf("\n");

return 0;
}


basta solo cambiare la stringa da fargli stampare

agente mm8
09-12-2008, 18:10
Grazie, ma mi basta creare una funzione usano il metodo sleep(), l'ho trovato ora.

DanieleC88
09-12-2008, 19:14
<ot>Ma tu non stavi studiando Java? Cosa ti ha infelicemente portato sulla strada del C?</ot>

Vincenzo1968
09-12-2008, 19:34
<ot>Ma tu non stavi studiando Java? Cosa ti ha infelicemente portato sulla strada del C?</ot>

Il lato oscuro della programmazione... brrrrrr che paura!!!

:lamer:

:bimbo:

mto89
09-12-2008, 20:19
potresti fare una cosa di sto tipo

char titolo[20]="Scritta Iniziale";
int i;

for (i=0; i<strlen(titolo); i++)
{
printf("%c",titolo[i]);
Sleep(MILLISEOCNDI);
}

DanieleC88
09-12-2008, 21:08
:lamer:
Esatto Vincenzo, è quello l'unico vero difetto del C: i principianti si ritrovano a fare macelli senza accorgersene e... BUM!, il programma è andato.

Io programmo in C da anni e non voglio certo rinnegarmi, ma riconosco che per iniziare a programmare può essere un'arma a doppio taglio. Se comprendi bene gli argomenti, li comprendi dalle basi, e conosci anche "ciò che c'è sotto", ma la curva d'apprendimento è più ripida ed è più alto il rischio che il programmatore in erba (non fraintendete :D) si demoralizzi ed abbandoni tutto.

Insomma, Java ha un "look and feel" simile, ma con molta pappa già pronta e un minor rischio di perdersi in argomenti oscuri come puntatori ed allocazioni dinamiche. Mi chiedevo solo perché avesse scelto di passare al C, visto che già aveva tanto di Java sotto mano. ;)

Vincenzo1968
09-12-2008, 21:22
Esatto Vincenzo, è quello l'unico vero difetto del C: i principianti si ritrovano a fare macelli senza accorgersene e... BUM!, il programma è andato.

Io programmo in C da anni e non voglio certo rinnegarmi, ma riconosco che per iniziare a programmare può essere un'arma a doppio taglio. Se comprendi bene gli argomenti, li comprendi dalle basi, e conosci anche "ciò che c'è sotto", ma la curva d'apprendimento è più ripida ed è più alto il rischio che il programmatore in erba (non fraintendete :D) si demoralizzi ed abbandoni tutto.

Insomma, Java ha un "look and feel" simile, ma con molta pappa già pronta e un minor rischio di perdersi in argomenti oscuri come puntatori ed allocazioni dinamiche. Mi chiedevo solo perché avesse scelto di passare al C, visto che già aveva tanto di Java sotto mano. ;)

Basta fornirsi di lanterna ;)

http://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Laterne.JPG/180px-Laterne.JPG

Alex_87_xelA
09-12-2008, 21:59
potresti fare una cosa di sto tipo

char titolo[20]="Scritta Iniziale";
int i;

for (i=0; i<strlen(titolo); i++)
{
printf("%c",titolo[i]);
Sleep(MILLISEOCNDI);
}

bella copia del mio programma :D SEI UN PROGRAN(COPIONE) NATO :D

mto89
10-12-2008, 07:59
bella copia del mio programma :D SEI UN PROGRAN(COPIONE) NATO :D

ops scusa alex:doh:
non me ne ero proprio accorto!

agente mm8
10-12-2008, 12:32
Grazie mto89, comunque dopo il java (molto tempo fà), ho fatto javascript, poi html, quindi php e sql, poi un pò di perl e ora il C. La prossima tappa sarà C++:D

Edit:Ho creato una funzione come la tua, solo che al posto dell'array ho messo un puntatore (così si autodimensiona) e poi sleep prende in input i secondi, quindi ho messo 0.05, ma scrive solo la prima lettera e si ferma!!!
Come mai?
Il metodo sleep non dovrebbe fermare il programma per i secondi presi in input e poi riprenderlo?

Edit2:impostando i secondi a 1, 0.5, 0.25 va; se li metto 0.1 (forse anche 0.2) o meno, nn va più.

Edit3:Il metodo funziona solo se i secondi sono maggiori o uguali a 2.5. Passando un valora minore, stampa un solo carattere e va in crash.

Alex_87_xelA
10-12-2008, 17:21
ops scusa alex:doh:
non me ne ero proprio accorto!

Not Problem (mamma mia che inglesacciooo :D )
Abbiamo lo stesso cerviello :D identica risoluzione :D forse perchè quella era la piu ovvia :D

Alex_87_xelA
10-12-2008, 17:22
una cosa di questo tipo ti va bene ?


#include <stdio.h>
#include <time.h>
#include <string.h>

void Aspetta( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}

int main()
{
char Stringa[] = "Ciao";

for(register unsigned int i = 0; i < strlen(Stringa); i++)
{
printf("%c", Stringa[i]);
Aspetta(250);
}

printf("\n");

return 0;
}


basta solo cambiare la stringa da fargli stampare

HAI PROVATO QUESTO ?
GUARDA CHE FUNZIONA UNA MERAVIGLIA.