Stuctures et fichiers en C

keisha Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
 elarifali -
Bonjour,
débutante en C,j'ai un peu de mal avec les fichiers et les structures.
Voici mon pb:g créé un fichier binaire comprenant 10 structures personne de type :nompersonne nbre1 nbre2 nbre3
j'affiche dans un tableau d'integer le résultat de pers.nbre1+pers.nbre2-pers.nbre3 Ce tableau me donne la position réelle des personnes dans le fichier
ex:
DUPONT 11 0 4
ds le fic de départ il est 1er mais sa place réelle est 7
GENARD 10 5 14 en 2 mais place réelle 1
DRESSERT 5 5 8 en 3 mais place réelle 2
etc
Comment faire pour afficher les noms à leur place réelle
Merci de me répondre assez vite
A voir également:

5 réponses

Ravachol Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   120
 
Salut,
si j'ai bien compris ce que tu voulais faire, ça peux ce coder comme cela


struct personne
{
char nom[21];
int nbr1;
int nbr2;
int nbr3;
};


// Fonction de comparaison qui sera utilisée par qsort
int cmpStruct(const void *st1, const void *st2)
{
//Cast des pointeurs void passs en argument en des pointeurs type structure personne
struct personne *stl1 = (struct personne *)st1;
struct personne *stl2 = (struct personne *)st2;

// Ton calcule de la position si tu veux un ordre croissant
return (stl2->nbr1+stl2->nbr2-stl2->nbr3)-(stl1->nbr1+stl1->nbr2-stl1->nbr3);
// Ton calcule de la position si tu veux un ordre décroissant
//return (stl1->nbr1+stl1->nbr2-stl1->nbr3)-(stl2->nbr1+stl2->nbr2-stl2->nbr3);
}


void main(int argc, char *argv[])
{
int nbElTab;
int tailleEl;
//Déclaration d'un tableau de 3 structures
struct personne pers[3];
//==================================================================
//Parce que j'ai eu la flème d'écrire et de lire dans un fichier ;-)
strcpy(pers[0].nom,"DUPONT");
pers[0].nbr1 = 11;
pers[0].nbr2 = 0;
pers[0].nbr3 = 4;
strcpy(pers[1].nom,"GENARD");
pers[1].nbr1 = 10;
pers[1].nbr2 = 5;
pers[1].nbr3 = 14;
strcpy(pers[2].nom,"DRESSERT");
pers[2].nbr1 = 5;
pers[2].nbr2 = 5;
pers[2].nbr3 = 8;
//==================================================================

//Affichage des noms de personne avant le triage
printf("Avant triage\n%s -- %s -- %s\n",pers[0].nom,pers[1].nom,pers[2].nom);
//Calcule de la taille d'un elément personne
tailleEl = sizeof(struct personne);
//Calcule du nombre d'élément personne dans le tableau
nbElTab = sizeof(pers)/tailleEl;
//Appel de la fonction de triage. Pour les détails de qsort regarde dans l'aide de ton compilo
qsort(pers,nbElTab,tailleEl,cmpStruct);
//Affichage des noms de personne après le triage
printf("Après triage\n%s -- %s -- %s\n",pers[0].nom,pers[1].nom,pers[2].nom);
}

A++

Ni l'ignorance n'est défaut d'esprit,
ni le savoir n'est preuve de génie. LUC DE CLAPIERS
0
joseph
 
s'il vous plait que quelqu'un m'aide je veux:
faire un programme qui distribue les eleves d'une classe aleatoirement dans les salles de controle
1-le probleme consiste a savoir le nombre de classe a distribuer
2-ouvrir un fichier texte qui represente la liste des noms des eleves de la classe et le placer dans une salle de controle en prenant en consideration le nombre de salle de controle, le nombre de place dans chaque salle les eloignements par ligne et par colonne des eleves d'un meme semestre et des semestres differents(sachant que ces eloignements sont fournis par l'utilisateur)
3-afficher la distibution finale dans un fichier texte

merci d'avance
0
Reeter Messages postés 120 Date d'inscription   Statut Membre Dernière intervention  
 
C'est quoi ta question? tu veux un logiciel tout fait?
0
maher
 
je veux un prgramme écrit en c d'un annuaire téléfonique qui peut consulter,modifier,ajouter,supprimer et rechercher les abonnés ayant quelque donné en utilisant la notion du fichier
0
Ravachol Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   120 > maher
 
Salut vieux,

C'est pas urgent au moins ?
T'as le temps de passer par là ?
http://www.commentcamarche.net/ccmguide/ccmcharte.php3

Y'a vraiment pas de quoi.
0
joseph
 
malheuresement Reeter oui c'est un projet donner par le docteur et aucun de nous ne sais manipuler C comme il faut si vous savez comment svp envoyer le a mon email
0
Reeter Messages postés 120 Date d'inscription   Statut Membre Dernière intervention  
 
Ben personnellement, ça me paraît un peu long à faire pendant mes heures de boulot.... Je laisse donc ce plaisir à un autre qui serait plus motivé que moi pour prendre du temps à le faire...
0
joseph
 
Reeter tu connais comment le faire? et bon tu peut me donner un algorithme du moins que je sacherai comment commencé?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
elarifali
 
rechere
0