Supprimer un etudiant de la list

Fermé
science smi - 6 févr. 2009 à 15:40
Azer_Ty Messages postés 104 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 4 juillet 2011 - 6 févr. 2009 à 17:14
Bonjour,
j'ai un probleme de faire un fonction pour supprimer un etudiant de la list en utilisant struct ;
j'ai fait une tentative le programme est marche mais pour faie fonction je ne sais pas comment ?
aidez moi svp
le prog est :#include<iostream> // library
using namespace std ;
struct etudiant // structure pour definir un etd
{
char nom;
long int cne;
};
int main() // ft pincipal
{
etudiant D,D2, D1[10];
int i,n,k;
cout<<"_____________________________________start___________________________________"<<endl;
cout<<"saisir le nbr de n="; // la dim de la list
cin>>n;
cout<<"_______________________________saisir les donnees_____________________________"<<endl;
for(i=0;i<n;i++)
{
cout<<"saisir pour le ["<<i <<"] etudiant "<<endl;
cout<<"le nom puis son CNE"<<endl;
cin>>D1[i].nom;
cin>>D1[i].cne;
cout<<endl;
}
cout<<"__________________________________la list est_________________________________"<<endl;
for(i=0;i<n;i++)
{
cout<<"*"<<D1[i].nom;
cout<<"..........................................."<<D1[i].cne;
cout<<endl;
}
cout<<"_______________________________________remove_________________________________"<<endl;
cout<<"saisir l'etudiant qui voulez vous supprimer "<<endl;
cout<<"le nom puis le numero:"<<endl;
cin>>D.nom>>D.cne;
for(i=0;i<=n;i++)
{
if((D1[i].nom==D.nom)&&(D1[i].cne==D.cne))
{
D2.nom=D1[i].nom;
D2.cne=D1[i].cne;
k=i;
}}
cout<<"__________________________________new-list____________________________________"<<endl;
for(i=k;i<n;i++)
{
D1[i].nom=D1[i+1].nom;
D1[i].cne=D1[i+1].cne;
}
// re-initialisier la dim de la list
n=n-1;
// affichage apres la supprission
cout<<"la list est:"<<endl;
for(i=0;i<n;i++)
{
cout<<"*****"<<D1[i].nom;
cout<<"..........................................."<<D1[i].cne;
cout<<endl;
}
cout<<"_________________________________FIN_______________________________________"<<endl;
return 0;
}




A voir également:

2 réponses

Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
6 févr. 2009 à 15:49
Salut.
Tu n'as pas la bonne façon de faire.
En C++, il existe la STL qui propose différents conteneur, comme std::list ou std::vector.
Je te conseil d'utiliser ça, c'est beaucoup plus facile à gérer.
http://www.fredosaurus.com/notes-cpp/index.html#STL
et
https://en.cppreference.com/w/Main_Page
0
Azer_Ty Messages postés 104 Date d'inscription vendredi 31 octobre 2008 Statut Membre Dernière intervention 4 juillet 2011 60
6 févr. 2009 à 17:14
Tiens essaye

	cout<<"__________________________________new-list____________________________________"<<endl;
	for(i=k;i<n-1;i++)
	{
		D1[i].nom=D1[i+1].nom;
		D1[i].cne=D1[i+1].cne;
	}
	// re-initialisier la dim de la list



Lorsque tu saisie le nombre d'étudiants je te suggère de vérifier que l'utilisateur ne rentre pas plus de 10 personnes.
	cout<<"_____________________________________start___________________________________"<<endl;
	do{
		cout<<"saisir le nbr de n="; // la dim de la list
		cin>>n;
	}while(n<0 || n>10);
	cout<<"_______________________________saisir les donnees_____________________________"<<endl;

0