Stuctures et fichiers en C
keisha
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
elarifali -
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
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:
- Stuctures et fichiers en C
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
- Fichiers bin - Guide
5 réponses
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
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
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
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
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.
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.
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
Reeter tu connais comment le faire? et bon tu peut me donner un algorithme du moins que je sacherai comment commencé?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question