Spanaccio
26-12-2008, 15:38
Ciao a tutti!!E' da poco che mi diletto con il C++ e ho riscontrato un problema al seguente programma che ho fatto per catalogare vinili.Quando inserisco i dati con il cin.getline() mi fa saltare la voce"artista" della struttura...le altre 2 no.. perche????(ho dovuto usare il cin.getline per poter inserire anche gli spazi..per inserire nome e cognome al campo artista ecc) Ecco il programma:
#include<iostream>
using namespace std;
struct vinile
{
char artista[30];
char album[30];
int anno;
vinile* succ;
};
typedef vinile* lista;
void inserisci_in_testa(lista& inizio, vinile lp)
{
lista p=new vinile;
*p=lp;
p->succ=inizio;
inizio=p;
}
void stampa_lista(lista output)
{
lista p=output; // p e output sono sinonimi
while(p!=0)
{
cout<<output->artista<<'\n'<<p->album<<'\n'<<p->anno<<'\n'<<'\n';
p=p->succ;
}
}
int main()
{
char r;
vinile lp;
lista catalogo=0;
cout<<"CATALOGO VINILI\n";
do
{
cout<<endl<<"Digitare 't' per inserire in testa i dati dei vinili:\n";
cout<<"Digitare 'p' per stampare a video i dati inseriti:\n";
cout<<"Digitare 'e' per uscire...\n";
cin>>r;
switch(r)
{
case 't': cout<<"Inserisci l'artista:\n";cin.getline(lp.artista,30);
cout<<"Inserisci l'album:\n";cin.getline(lp.album,30 );
cout<<"Inserisci l'anno:\n";cin>>lp.anno;
inserisci_in_testa(catalogo,lp);
break;
case 'p': stampa_lista(catalogo);
break;
case 'e': break;
default: cout<<"ERRORE!!!L'operatore inserito e' errato!!\n";break;
}
}while(r != 'e');
system("pause");
}
Grazie a tutti in anticipo!!
#include<iostream>
using namespace std;
struct vinile
{
char artista[30];
char album[30];
int anno;
vinile* succ;
};
typedef vinile* lista;
void inserisci_in_testa(lista& inizio, vinile lp)
{
lista p=new vinile;
*p=lp;
p->succ=inizio;
inizio=p;
}
void stampa_lista(lista output)
{
lista p=output; // p e output sono sinonimi
while(p!=0)
{
cout<<output->artista<<'\n'<<p->album<<'\n'<<p->anno<<'\n'<<'\n';
p=p->succ;
}
}
int main()
{
char r;
vinile lp;
lista catalogo=0;
cout<<"CATALOGO VINILI\n";
do
{
cout<<endl<<"Digitare 't' per inserire in testa i dati dei vinili:\n";
cout<<"Digitare 'p' per stampare a video i dati inseriti:\n";
cout<<"Digitare 'e' per uscire...\n";
cin>>r;
switch(r)
{
case 't': cout<<"Inserisci l'artista:\n";cin.getline(lp.artista,30);
cout<<"Inserisci l'album:\n";cin.getline(lp.album,30 );
cout<<"Inserisci l'anno:\n";cin>>lp.anno;
inserisci_in_testa(catalogo,lp);
break;
case 'p': stampa_lista(catalogo);
break;
case 'e': break;
default: cout<<"ERRORE!!!L'operatore inserito e' errato!!\n";break;
}
}while(r != 'e');
system("pause");
}
Grazie a tutti in anticipo!!