Pointeur en c

Fermé
Haladou Issa Ali Messages postés 23 Date d'inscription mardi 17 novembre 2009 Statut Membre Dernière intervention 18 octobre 2015 - 24 janv. 2011 à 13:39
 pointeur avc liste chainnee - 27 janv. 2011 à 14:49
Bonjour, se t-ce quelqu'un peut m'aider à créer un programme pointeur en c permettant de saisir la liste des étudiants d'une classe dont l'effectif n'est pas connu à priori. merci!

1 réponse

il faut utiliser les listes chainées , avec ce mot clé tu auras un tas d'exemple .
0
pointeur avc liste chainnee
27 janv. 2011 à 14:49
D'accord c'est ce que j'ai utilisé avec les pointeurs mais sa marche pas tres bien car on veut faire en réalite une saisie ttriée sélon le numéro de matricule de l'etudiant

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<malloc.h>
typedef struct Classe
{ int note, mat;
char nom[255];
struct Classe *SVT;
}Etudiant;
Etudiant *teteliste, *ptr;


/*3.Ecrire un programme qui permet de saisir la liste des
etudiants de façon triée par ordre croissant des matricules */
void saisie_trie()
{ Etudiant *ptrC, *ptrP;
int n;
int choix = 0;
teteliste = ptr;
while(choix ==0)
{ ptr =(Etudiant *)malloc(sizeof(Etudiant));
printf("\nEntrer le nom de l'etudiant:\n");
scanf("\n%s", ptr->nom);
printf("\n Entrer le matricule de l'etudiant:\n");
scanf("\n%d", &ptr->mat);
printf("\nEntrer la note de l'etudiant:\n" );
scanf("\n%d", &ptr->note);

if(teteliste == NULL)
/* Cas de la saisie du premier element*/
{teteliste =ptr;

affichage();
}
else
{ while(choix ==0)
{ ptr =(Etudiant *)malloc(sizeof(Etudiant));
printf("\nEntrer le nom de l'etudiant1:\n");
scanf("\n%s", ptr->nom);
printf("\n Entrer le matricule de l'etudiant1:\n");
scanf("\n%d", &ptr->mat);
printf("\nEntrer la note de l'etudiant1:\n" );
scanf("\n%d", &ptr->note);
affichage();
if((teteliste->mat) > ptr->mat)
/*Cas d'une insertion en tête de liste*/
{ ptr->SVT = teteliste;
teteliste =ptr;
}
else
/*cas d'une insertion dans le corps de la liste*/
{ ptrC = teteliste;
ptrP = teteliste;
}
}
}

while((ptrC != NULL) && (ptrC->mat < ptr->mat))

}
fin du programme; au faite ça marche bien car sa affiche seulement le dernier etudiant saisi, merci!!!
{ ptrP = ptrC;
ptrC = ptrC->SVT;
}
ptrP->SVT =ptr;
ptr->SVT =ptrC;




}
0