Matthew (Member)
Expert
Messaggi: 387
Iscritto: 29/01/2007
|
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...
|
|
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
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)
|
|
wicca89 (Normal User)
Rookie
Messaggi: 45
Iscritto: 16/01/2009
|
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...
|
|
Matthew (Member)
Expert
Messaggi: 387
Iscritto: 29/01/2007
|
La tua funzione di ordinamento è sbagliata.
Come ti ha suggerito Poggi Marco, darei un'occhiata alla teoria.
Ultima modifica effettuata da Matthew il 20/03/2010 alle 0:18 |
|
Matthew (Member)
Expert
Messaggi: 387
Iscritto: 29/01/2007
|
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. |
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
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); ".
|
|
Poggi Marco (Member)
Guru
Messaggi: 969
Iscritto: 05/01/2010
|
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?) |
|
Matthew (Member)
Expert
Messaggi: 387
Iscritto: 29/01/2007
|
Un'altro problemino: la funziona aggiungi così com'è contiene un argomento di troppo. Il secondo argomento infatti è inutilizzato. Non so se la traccia che stai seguendo vada proprio seguita alla lettera. Potresti semplicemente eliminare quell'argomento. Se però la traccia va seguita alla lettera, sarebbe meglio creare il nuovo libro nella funzione principale e poi passarlo a quella di inserimento.
|
|