Programmation en language C probléme
Fermé
Snipe
-
9 mai 2008 à 14:21
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 13 mai 2008 à 08:39
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 13 mai 2008 à 08:39
Bonjour,
je suis étudiant en L2 maths informatique et j'ai du mal avec un projet
je ne sais pas comment procéder pour faire sa :
Il s'agit dans un premier temps de créer un fichier à partir du clavier ou chaque enregistrement est formé d'un nom et d'un solde, puis charger ce fichier en mémoire centrale pour le trier par ordre alphabétique avant d'écraser ce fichier avec le fichier trié.
Puis dans un deuxiéme temps il faut prévoir la modification du solde directement sur le fichier trié.
pouvez me donner un exemple de programme ressenblant ou me dire comment faire.
merci.
je suis étudiant en L2 maths informatique et j'ai du mal avec un projet
je ne sais pas comment procéder pour faire sa :
Il s'agit dans un premier temps de créer un fichier à partir du clavier ou chaque enregistrement est formé d'un nom et d'un solde, puis charger ce fichier en mémoire centrale pour le trier par ordre alphabétique avant d'écraser ce fichier avec le fichier trié.
Puis dans un deuxiéme temps il faut prévoir la modification du solde directement sur le fichier trié.
pouvez me donner un exemple de programme ressenblant ou me dire comment faire.
merci.
A voir également:
- Programmation en language C probléme
- Application de programmation - Guide
- Language binaire - Guide
- Mettre en veille un programme - Guide
- Programmation logo tortue télécharger - Télécharger - Études & Formations
9 réponses
mich62120
Messages postés
631
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2010
6
9 mai 2008 à 14:55
9 mai 2008 à 14:55
salut Snip.
A mon avis je pense que tu devrais:
1/ Etre un peu plus précis.
2/ avancer petit à petit et poser les questions au fur et à mesures car je pense pas que quelqu'un t'expliquera le code entièrement en une fois.
Moi perso je sais pas si je peux t'aider car je suis débutant aussi mais si je te dis ça c'est que j'ai étais dans le même cas quand j'ai mis un projet entier en demande.
En plus t'apprendra plus de choses en ayant des explications petit à petit.
Mich
A mon avis je pense que tu devrais:
1/ Etre un peu plus précis.
2/ avancer petit à petit et poser les questions au fur et à mesures car je pense pas que quelqu'un t'expliquera le code entièrement en une fois.
Moi perso je sais pas si je peux t'aider car je suis débutant aussi mais si je te dis ça c'est que j'ai étais dans le même cas quand j'ai mis un projet entier en demande.
En plus t'apprendra plus de choses en ayant des explications petit à petit.
Mich
oui c'est vrai
ce que j'ai fait c'est que je sais me débrouiller pour ce qui est de remplir à la main le fichier et que mes information seront stockée dans un tableau de charactétres pour les nom et de nombre pour le solde , pour trié il y'a une fonction strcmp ou qsort mais pour charger le fichier le modifier et de le réécrire c'est plus compliqué.
ce que j'ai fait c'est que je sais me débrouiller pour ce qui est de remplir à la main le fichier et que mes information seront stockée dans un tableau de charactétres pour les nom et de nombre pour le solde , pour trié il y'a une fonction strcmp ou qsort mais pour charger le fichier le modifier et de le réécrire c'est plus compliqué.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 mai 2008 à 15:24
9 mai 2008 à 15:24
pour lire écrire et ouvrir un fichier, voi du coté des fonctions :
fprintf write
fscanf read
fopen
pour avoir de l'aides sur ces fonctions, tu tape dans un moteur de recherche sur internet man <fonction> ou tout simplement dans la console si tu utilises Linux ou cygwin.
fprintf write
fscanf read
fopen
pour avoir de l'aides sur ces fonctions, tu tape dans un moteur de recherche sur internet man <fonction> ou tout simplement dans la console si tu utilises Linux ou cygwin.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mich62120
Messages postés
631
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2010
6
9 mai 2008 à 15:45
9 mai 2008 à 15:45
normalement pour faire ce genre de projet tu n'as pas besoin de tableaux.
tu peux déclarer une variable en FILE* (pointeur sur fichier).
Après tu peux écrire et lire autant de fois que tu veux dans des boucles avec les fonctions que Char Snipeur t'a parlées.
Avant tes traitements il faut l'ouvrir avec fopen() et le fermer à la fin fclose().
Enfin le mieux c'est que tu te renseigne sur ça, il y a déjà eu des topics interressant pour les débutants à ce sujet sur ccm.
tu peux déclarer une variable en FILE* (pointeur sur fichier).
Après tu peux écrire et lire autant de fois que tu veux dans des boucles avec les fonctions que Char Snipeur t'a parlées.
Avant tes traitements il faut l'ouvrir avec fopen() et le fermer à la fin fclose().
Enfin le mieux c'est que tu te renseigne sur ça, il y a déjà eu des topics interressant pour les débutants à ce sujet sur ccm.
voila ce que j'ai pu faire :
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Tree { char name[32]; char number[32]; struct tree * left; struct tree * right; }* root; void addItem(struct Tree * root, struct Tree * Parain, int bDir, struct Tree * Item) { if (root) { if(strcmp(root->name, Item->name)<0) { addItem(root->left, root, 0, Item); } else if (strcmp(root->name, Item->name)>0) { addItem(root->right, root, 1, Item); } else if (strcmp(root->number, Item->number)<0) { addItem(root->left, root, 0, Item); } else { addItem(root->right, root, 1, Item); } } else { if (bDir) Parain->right=Item; else Parain->left=Item; } } int fCreerArbre (File *file) { char sBuf[128]; struct Tree * Item; while (fgets(sBuf, 128, file)) { Item=(struct Tree*)malloc(sizeof(struct Tree)); sscanf(sBuf, "%s[31] %s[31]", Item->name, Item->number); Item->left=NULL; Item=right=NULL; if (root) addItem(root, root, 0, Item); else root=item; } } int fparcoursArbre(FILE * file, struct Tree * root) { if(root) { fparcoursrbre(file, root->left); fprintf(file, "%s %s \r\n", root->name, root->number); fparcoursArbre(file, root->right); } } int main (int nargs, char ** args) { char * sInputFile; char * sOutputFile; FILE * fInputFile; FILE * fOutputFile; sInputFile=(char *)malloc(strlen(args[1])*sizeof(char)+1); strcpy(sInputFile, args[1]); sInputFile [strlen(args[1])]; sOutputFile=(char *)malloc(strlen(args[1])*sizeof(char)+1); strcpy(sOutputFile, args[1]); sOutputFile [strlen(args[1])]; fInputFile=fopen(sInputFile, "r+"); fOutputFile=fopen(sOutputFile, "w+"); fCreerArbre(fInputFile); fParcoursArbre(fOutputFile, root); fclose(fInputFile); fclose(fOutputFile); return 0; }
voila le code sans erreurs mais avec des warning que je n'arrive pas a éliminer je bloque là
#include <stdio.h> #include <stdlib.h> #include <string.h> struct Tree { char nom[32]; char number[32]; struct tree *left; struct tree *right; }*root; void addItem(struct Tree *root, struct Tree *Parain, int bDir, struct Tree *Item) { if (root) { if(strcmp(root->nom, Item->nom)<0) { addItem(root->left, root, 0, Item); } else if (strcmp(root->nom, Item->nom)>0) { addItem(root->right, root, 1, Item); } else if (strcmp(root->number, Item->number)<0) { addItem(root->left, root, 0, Item); } else { addItem(root->right, root, 1, Item); } } else { if (bDir) Parain->right=Item; else Parain->left=Item; } } int fCreerArbre (FILE* file) { char sBuf[128]; struct Tree * Item; while (fgets(sBuf, 128, file)) { Item=(struct Tree*)malloc(sizeof(struct Tree)); sscanf(sBuf, "%s[31] %s[31]", Item->nom, Item->number); Item->left=NULL; Item->right=NULL; if (root) addItem(root, root, 0, Item); else root=Item; } } int fparcoursArbre(FILE *file, struct Tree *root) { if(root) { fparcoursArbre(file, root->left); fprintf(file, "%s %s \r\n", root->nom, root->number); fparcoursArbre(file, root->right); } } int main (int nargs, char ** args) { char * sInputFile; char * sOutputFile; FILE * fInputFile; FILE * fOutputFile; sInputFile=(char *)malloc(strlen(args[1])*sizeof(char)+1); strcpy(sInputFile, args[1]); sInputFile [strlen(args[1])]; sOutputFile=(char *)malloc(strlen(args[1])*sizeof(char)+1); strcpy(sOutputFile, args[1]); sOutputFile [strlen(args[1])]; fInputFile=fopen(sInputFile, "r+"); fOutputFile=fopen(sOutputFile, "w+"); fCreerArbre(fInputFile); fparcoursArbre(fOutputFile, root); fclose(fInputFile); fclose(fOutputFile); return 0; }
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
13 mai 2008 à 08:39
13 mai 2008 à 08:39
sInputFile [strlen(args[1])]; ne sert à rien
dans struct Tree, tu mets des struct tree (sans majuscule)
C'est tout ce que je vois pour l'instant
dans struct Tree, tu mets des struct tree (sans majuscule)
C'est tout ce que je vois pour l'instant