PDA

Visualizza la versione completa : [C++] funzione gets() e ripetizione programma


inlovewithme
26-05-2007, 20:55
Ciao ragazzi, mi servirebbe un aiuto se possibile..
in pratica ho un compito da svolgere per il mio professore,un programmino che conta il numero di sottostringhe d'elementi uguali presenti in un vettore ordinato inserito in ingresso tramite tastiera...

il programma risolto,funziona correttamente,per c' solo un problema

il codice per inserire una stringa,almeno quello che ho studiato io :

gets(stringa); il codice ti permettere di inserire stringhe di caratteri come questa : "aaabcde fgh",diciamo contando anche gli spazi,la funzione gets() gira perfettamente ma c' un solo problema,poich io ho creato il programma in modo che si possa ripetere quante volte si vuole l'operazione,c' bisogno di pulire la funzione gets.. poich ogni volta che ripeto il programma,viene eseguito con la stessa stringa inserita in precedente
b io proprio non so come si pulisce...
c' qualcuno di vuoi che lo sa e mi pu aiutare?

ve ne sarei molto grato,buon sabato sera a tutti

MItaly
26-05-2007, 21:02
"pulire la funzione gets"? :confused:
Posta il codice che hai scritto finora...

inlovewithme
26-05-2007, 21:11
Forse non mi sono spiegato bene..

Inserita ad esempio la stringa "ciao" il programma effettua il suo compito (il programma gira perfettamente), e mi chiede se voglio continuare ed inserire un'altra stringa,io dico di si,ma il programma ha in memoria ancora la stringa "ciao" e quindi non mi permette di inserire un'altra stringa,in pratica continua l'operazioen con la stringa "ciao".

il problema compare solo se nel codice inserisco il comando gets(stringa);
se invece uso il comando cin>>stringa; il programma funziona perfettamente e me lo fa ripetere tranquillamente.

Ora mi direte,usa la cin allora...

io invece ho bisogno di usare la gets() perch la gets() conta anche i gli spazi vuoti mentre la cin no...

Mi hanno detto che la gets() va ripulita... per questo chiedevo a voi

oregon
26-05-2007, 21:13
Originariamente inviato da inlovewithme
Forse non mi sono spiegato bene..

Ma forse tu non hai letto quello che ti ha scritto MItaly ...

... ti aveva detto di postare il codice che hai scritto ...

inlovewithme
26-05-2007, 21:15
inutile postare il codice se so dov' il problema :madai!?:
pensavo solo di non essermi speigato bene,se indispensabile lo posto :dott:
so che devo ripulire la gets() perch come se tenesse in memoria la stessa stringa inserita precedentemente,il problema che non so come far

oregon
26-05-2007, 21:17
Originariamente inviato da inlovewithme
inutile postare il codice se so dov' il problema :madai!?:
pensavo solo di non essermi speigato bene,se indispensabile lo posto :dott:

Dato che "ripulire la gets" non significa proprio nulla e dato che due persone che ti hanno risposto ti chiedono di postare il codice, potrai farlo ... no?

inlovewithme
26-05-2007, 21:17
sprucido :zizi:
sp ora lo posto ^*
grazie per l'interessamento comunque

inlovewithme
26-05-2007, 21:20
--

oregon
26-05-2007, 21:28
La main deve essere



int main()
{
char a[80];
int rip;
do
{
system("CLS");
cout<<"\n***PROVA N.10*** \n";
inserisci(a);
funzione(a);
cout<<"Digitare 1 per continuare,0 per uscire\n";
cin>>rip;
cin.ignore(1, '\n');
} while (rip==1);
}


nota le modifiche in grassetto.

P.S. Non sono scorbutico ... posso sembrare antipatico quando devo inviare n messaggi prima di ricevere una risposta adeguata per dare un aiuto ... :madai!?:

inlovewithme
26-05-2007, 21:39
impressionante *_*
funziona perfettamente,se non ti di disturbo,puoi spiegare come funziona e cos' ?

ovviamente mi riferisco al --> cin.ignore(1, '\n');

Loading