Oppure

Loading
19/03/10 22:36
wicca89
una domanda un pò banale con il c quando volevo prendere una frase usavo gets se qui voglio che ne so a titolo mettere yes man come posso fare???
xk il cin me lo vedrebbe come yes=titolo e man=autore...
aaa
19/03/10 22:53
Matthew
Postato originariamente da wicca89:

una domanda un pò banale con il c quando volevo prendere una frase usavo gets se qui voglio che ne so a titolo mettere yes man come posso fare???
xk il cin me lo vedrebbe come yes=titolo e man=autore...


istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );

cplusplus.com/reference/iostream/istream/getline/

aaa
19/03/10 22:58
Poggi Marco
Usa getline()!

Esempio: grtline(d, 50) ;
Salvera i caratteri in d fino ad un massimo di 49 (50-1), o fin quando non viene premuto invio.

Ho provato la tua funzione, sembra a buon punto!
Però, a mio avviso, fa troppe cose. (Non dovrebbe chiedere all' utente cosa ordinare)
aaa
19/03/10 23:09
wicca89
si ma se faccio qst:
void aggiungi(Tgalleria& galleria , Topera& opera){

cout<<"Inserisci il titolo dell'opera da aggiungere nella galleria: ";
cin.getline(galleria.opera[galleria.numero].titolo,101);
cout<<"Inserisci l'autore del titolo dell'opera da aggiungere nella galleria: ";
cin.getline(galleria.opera[galleria.numero].autore,101);
cout<<"Inserisci la data di creazione: ";
cin>>galleria.opera[galleria.numero].data.gg>>galleria.opera[galleria.numero].data.mm>>galleria.opera[galleria.numero].data.aa;
cout<<"Inserisci il prezzo del libro: ";
cin>>galleria.opera[galleria.numero].prezzo;

galleria.numero++;
}
mi esce un casino mi stampa prima a video:
Inserisci il titolo dell'opera da aggiungere nella galleria: Inserisci l'autore del titolo dell'opera da aggiungere nella galleria:
e poi m fa inserire tutto...
aaa
19/03/10 23:14
Matthew
La tua funzione di ordinamento è sbagliata.
Come ti ha suggerito Poggi Marco, darei un'occhiata alla teoria. :rotfl:
Ultima modifica effettuata da Matthew 19/03/10 23:18
aaa
19/03/10 23:20
Matthew
Postato originariamente da Poggi Marco:

Usa getline()!

Esempio: grtline(d, 50) ;
Salvera i caratteri in d fino ad un massimo di 49 (50-1), o fin quando non viene premuto invio.

Ho provato la tua funzione, sembra a buon punto!
Però, a mio avviso, fa troppe cose. (Non dovrebbe chiedere all' utente cosa ordinare)


Giusto, viene già chiesto in precedenza. E la funzione stessa come argomento contiene già la scelta dell'utente. Resta il fatto che l'algoritmo di ordinamento è sbagliato.
aaa
19/03/10 23:25
Poggi Marco
Sicuramente è un problema del baffer da tastiera.
Prima ci chiedere la data con il cin, devi svuotarlo.
A tale scopo usa la funzione " fflush(stdin); ".
aaa
19/03/10 23:27
Poggi Marco
Postato originariamente da Matthew:

Postato originariamente da Poggi Marco:

Usa getline()!

Esempio: grtline(d, 50) ;
Salvera i caratteri in d fino ad un massimo di 49 (50-1), o fin quando non viene premuto invio.

Ho provato la tua funzione, sembra a buon punto!
Però, a mio avviso, fa troppe cose. (Non dovrebbe chiedere all' utente cosa ordinare)


Giusto, viene già chiesto in precedenza. E la funzione stessa come argomento contiene già la scelta dell'utente. Resta il fatto che l'algoritmo di ordinamento è sbagliato.


Dove è sbagliato (a parte chiedere all' utente cosa ordinare?)
aaa