IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

TP DE PROGRAMMATION EN C


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut TP DE PROGRAMMATION EN C
    Salut a vous ! j'ai un TP sur la programmation en C. Mais tout au long de mon travail je rencontre beaucoup de problèmes , par exemple après la compilation le je n'obtiens pas vraiment le résultat attendu..... et plein d'autre petit problème. ma préoccupation est vous m'aidiez dans mon travail , pas de faire le travail et de m'envoyer non , je veux bien apprendre , et par conséquent J'ai besoin de quelqu'un avec qui travailler le plus rapidement possible . Dans le lien qui suit se trouve mon dossier de travail ou j'ai loge mes fichiers. j'ai vraiment besoin d'une aide les gars https://drive.google.com/drive/folde...S_?usp=sharing

  2. #2
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 311
    Points : 354
    Points
    354
    Par défaut
    bon j'ai un peu regardé...

    Au niveau du nom des variables et des champs de structures c'est super c'est parlant ^^

    Dans fonction.c

    Ligne 21: je suis un peu dubitatif quant à l'utilisation des "labels" (étiquettes)... en programmation C il faut essayer d'éviter le plus possible les "goto" (programmation spaghetti).

    Conseil: faire une fonction qui valide les entrées (une boucle en gros)...

    C'est super il y a des commentaires ^^

    Ligne 55: fichier2 est bien un pointeur et pour être précis, c'est un pointeur sur une structure (un descripteur de fichier)

    J'ai du mal avec la manière de constituer les blocs façon Kernighan, il paraît que c'est mieux de mettre les accolades à la fin du if(), for(), while(), do()... moi je les ai toujours mises à dessous c'est mieux pour les éditeurs pour assurer les tabulations de manière correctes.
    Mais je pense que c'est une question de goûts et de couleurs.


    A partir de la ligne 110... il doit y avoir un meilleur moyen pour obtenir le même résultat.
    Encore une fois, c'est personnel, je ne trouve pas le "else if" pratique du tout, je ne l'utile jamais.

    Dans tes commentaires, je n'ai pas trouvé ceux qui indiquent les instructions qui ne font pas ce que tu attends d'elles, du coup, c'est un peu difficile pour moi de te conseiller sur une approche ou l'autre.
    De ce que j'ai vu, au niveau de l'écriture du code source, cela m'a l'air correct.

    Je vais compiler et essayer de débusquer les bugs.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Merci déjà pour tes remarques et conseils , je vais m'améliorer. Car cela ne tienne j'ai encore un soucis: j'aimerai savoir comment résoudre mon problème , après avoir compilé et exécuté au niveau des champs a remplir comme par exemple: NOM et PRENOM , après exécution le champ NOM ne demande rien a l'utilisateur et directement le curseur saute et va au niveau du champ PRENOM et stocke la valeur entrée par l'utilisateur ,comment résoudre ce problème???????????

    s'il vous plait je vous ai pas bien saisi au niveau où vous parliez de constituer les blocs de la façon Kernighan

  4. #4
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 562
    Points : 7 628
    Points
    7 628
    Par défaut
    Citation Envoyé par ramzy05 Voir le message
    s'il vous plait je vous ai pas bien saisi au niveau où vous parliez de constituer les blocs de la façon Kernighan
    C'est juste la manière que tu utilises pour placer tes accolades. Elle est très bien la manière Kernighan, j'ai mis longtemps avant de l'utiliser mais depuis 15 ans j'y suis passé et je pense que c'est une excellente manière de constituer les blocs.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par dalfab Voir le message
    C'est juste la manière que tu utilises pour placer tes accolades. Elle est très bien la manière Kernighan, j'ai mis longtemps avant de l'utiliser mais depuis 15 ans j'y suis passé et je pense que c'est une excellente manière de constituer les blocs.
    ah ok je voix. cool

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par ramzy05 Voir le message
    Merci déjà pour tes remarques et conseils , je vais m'améliorer. Car cela ne tienne j'ai encore un soucis: j'aimerai savoir comment résoudre mon problème , après avoir compilé et exécuté au niveau des champs a remplir comme par exemple: NOM et PRENOM , après exécution le champ NOM ne demande rien a l'utilisateur et directement le curseur saute et va au niveau du champ PRENOM et stocke la valeur entrée par l'utilisateur ,comment résoudre ce problème???????????
    prière de me donner des réponses ici please.

  7. #7
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 311
    Points : 354
    Points
    354
    Par défaut
    je pense que c'est lié à l'utilisation des scanf()... mais je verrais cela demain.

  8. #8
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 311
    Points : 354
    Points
    354
    Par défaut
    Pas su m'en empêcher ^^

    J'ai retrouvé un programme de démonstration utilisé en classe pour démontrer que scanf() est à proscrire pour éviter ce genre d'effets non désirables: impossible de saisir les données avec le fgets() (gets() est à proscrire) qui suit le scanf().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    	printf("scanf() puis fgets()...\n");
     
    	int 	saloperie;
    	char	strSaloperie[4];
    	char strPreuve[4];
     
    	scanf("%d",&saloperie);
    	fgets(strSaloperie,4,stdin);
     
    	printf("[1] [%d]\n",saloperie);
    	printf("[2] [%s]\n",strSaloperie);
     
    	printf("fgets() et conversion...\n");
    	fgets(strSaloperie,4,stdin);
    	fgets(strPreuve,4,stdin);
     
    	printf("[1] [%d]\n",atoi(strSaloperie));
    	printf("[2] [%s]\n",strPreuve);
    Quand nous devons saisir des données de types différents, moi je conseille à mes élèves de soit utiliser les fonctions développées pour notre laboratoire (qui ressemblent à getline() du C) ou fgets().
    Je conseille de ne JAMAIS mélanger les scanf() et les fgets().

    Alors ça demande de passer par des fonctions comme atoi(), atol(), atof() pour passer les chaînes de caractères saisies aux champs d'un type numérique mais entre cela et mettre des fgetc() pour "manger" le '\n'
    après chaque scanf(), je préfère une instruction atoi()...

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fgets(strSaisie,8,stdin);
    b.NOTEPHY=atof(strSaisie); // strtof() fonctionne aussi...
    ...on utilisera toujours la même chaine de saisie qui devra être suffisemment "large" pour contenir toutes les données à saisir.

  9. #9
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 311
    Points : 354
    Points
    354
    Par défaut
    Meilleurs voeux, évidemment, et gros bisous au Cameroun tout entier ^^

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par hurukan Voir le message
    Pas su m'en empêcher ^^

    J
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fgets(strSaisie,8,stdin);
    b.NOTEPHY=atof(strSaisie); // strtof() fonctionne aussi...
    ...on utilisera toujours la même chaine de saisie qui devra être suffisemment "large" pour contenir toutes les données à saisir.
    Merci bien pour votre aide , je vais de ce pas voir comment implémenter ca!

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par hurukan Voir le message
    Meilleurs voeux, évidemment, et gros bisous au Cameroun tout entier ^^
    merci je vous souhaite également le meilleur!!

  12. #12
    Membre expérimenté
    Avatar de sambia39
    Homme Profil pro
    No Comment
    Inscrit en
    Mai 2010
    Messages
    543
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : No Comment
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2010
    Messages : 543
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Citation Envoyé par hurukan Voir le message
    .........


    Quand nous devons saisir des données de types différents, moi je conseille à mes élèves de soit utiliser les fonctions développées pour notre laboratoire (qui ressemblent à getline() du C) ou fgets().
    Je conseille de ne JAMAIS mélanger les scanf() et les fgets().


    Alors ça demande de passer par des fonctions comme atoi(), atol(), atof() pour passer les chaînes de caractères saisies aux champs d'un type numérique mais entre cela et mettre des fgetc() pour "manger" le '\n'
    après chaque scanf(), je préfère une instruction atoi()...


    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fgets(strSaisie,8,stdin);
    b.NOTEPHY=atof(strSaisie); // strtof() fonctionne aussi...

    ...on utilisera toujours la même chaine de saisie qui devra être suffisemment "large" pour contenir toutes les données à saisir.

    Personnellement, je n’opterais pas pour les fonctions atoi, car elles n’ont aucun moyen de signaler des erreurs pour les valeurs non-valides. Plus précisément, les fonctions atoi() , atol() , et atoll() ont un comportement indéfini si la valeur du résultat ne peut pas être représentée. Elles renvoient 0 si la chaîne ne représente pas un entier, ce qui est impossible à distinguer d'une chaîne d'entrée correctement formatée et comportant un zéro et cela donne un très beau comportement indéfini.


    Autres points : la ligne 30 où se trouve l’instruction suivante if(fichier1 == NULL) de la fonction "remplir_donnee" doit être revue ; car elle poursuivra son exécution malgré une erreur. Résultat segment default dans les meilleurs de cas ou comportement du programme totalement indéterminé.


    Dans la seconde fonction (modifier); aucun test n’est réalisé après l’ouverture des fichiers et donc, impossible de savoir avec précision lors de l'exécution du programme, si l'erreur est due à l’échec de l’ouverture du fichier ou lors de la lecture du flux; quand se produira le segment default dans les meilleurs des cas (bad descriptor) ou un comportement indéterminé et c’est quasiment idem pour la fonction supprimée.


    À bientôt.
    Celui qui peut, agit. Celui qui ne peut pas, enseigne.
    Il y a deux sortes de savants: les spécialistes, qui connaissent tout sur rien,
    et les philosophes, qui ne connaissent rien sur tout.
    George Bernard Shaw

  13. #13
    Membre averti

    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2012
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2012
    Messages : 311
    Points : 354
    Points
    354
    Par défaut
    Citation Envoyé par sambia39 Voir le message
    Personnellement, je n’opterais pas pour les fonctions atoi, car elles n’ont aucun moyen de signaler des erreurs pour les valeurs non-valides
    Oui c'est juste les fonctions strtol(), strtod(), strtof() sont plus adaptées pour le traitement des représentations qui ne seraient pas valides.
    Elles renvoient ERANGE (errno) ce qui est peut-être plus intéressant si il faut s'assurer que les données converties correspondent vraiment au type que nous voulons convertir.

    Dans mes laboratoires, les fonctions atoXXX sont suffisantes... sauf pour celui-ci...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    for(int cpt=0;cpt<strlen(strCPwd);cpt+=2) // nous allons copier les "digits" (caractères) deux par deux...
    	{
    		strncat(cRepHex,&strCPwd[cpt],2); // on copie deux caractères à partir de l'adresse de strCPwd[cpt] et on les met dans cRepHex...
    		strcat(cRepHex,"\0");
    		// ...on copie donc les deux digits au format hexadécimal (ANSI -> 1 byte -> 00h jusque FFh)...
     
    		// nous travaillons sur une chaine de caractères qui représente un caractère au format hexadécimal sur 1 byte (char)
    		// il existe, heureusement pour nous une fonction qui peut convertir une chaine de caractères exprimée en hexadécimal en entier (long)
    		lRepEntier=strtol(cRepHex,NULL,16); // je ne sais pas du tout à quoi sert le deuxième paramètre, mais 16 indique que le contenu de cRepHex est de l'hexadécimal...
    		// ...au format 0xXX où XX peut contenir les lettres de A à F et les chiffres de 0 à 9...
     
    		strcpy(cRepHex,"0x"); // sans ceci notre programme va partir en sucette...
     
    		strTmpCrypted[indice]=(unsigned char)lRepEntier-iCleCryptage; // on opère le décryptage proprement dit...
    		indice++;
    	}
    ...dans le contexte de la nécessité de convertir des digits hexadécimaux dans leur représentation entière... et nous ne nous sommes pas préoccupés de savoir si la "conversion" a été correctement effectuée ou pas
    nous nous basons sur le fait que ce qu enous avons en entrée c'est de l'hexadécimal.

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par sambia39 Voir le message
    Bonjour,



    Autres points : la ligne 30 où se trouve l’instruction suivante if(fichier1 == NULL) de la fonction "remplir_donnee" doit être revue ; car elle poursuivra son exécution malgré une erreur. Résultat segment default dans les meilleurs de cas ou comportement du programme totalement indéterminé.


    Dans la seconde fonction (modifier); aucun test n’est réalisé après l’ouverture des fichiers et donc, impossible de savoir avec précision lors de l'exécution du programme, si l'erreur est due à l’échec de l’ouverture du fichier ou lors de la lecture du flux; quand se produira le segment default dans les meilleurs des cas (bad descriptor) ou un comportement indéterminé et c’est quasiment idem pour la fonction supprimée.


    À bientôt.
    merci je vais revoir cela pour améliorer le code

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut petit probleme
    Salut la famille. j'ai récemment avancer avec mon tp et je suis buter au niveau de la question 4, au niveau de ma fonction rempli_resutat qui remplir le fichier résultat de la ligne 448 a 497(dans fonction.c). au fait cette fonction est sensé récupérer le NCIN, le nom , la moyenne au Bac , les notes en maths et en physique pour chaque candidat et écrire ces données dans resultat.txt
    mais après compilation et que j'appelle cette fonction ca ne marche pas, et j'obtiens ceci dans mon fichier resultat.txt:Nom : image1.JPG
Affichages : 301
Taille : 16,1 Ko, ce qui ne réponds pas a mes attentes s'il vous j'ai vraiment besoin de passer cette étape pour finir ce tp.
    voici le lien de mon travail avec les mises a jours:http://https://drive.google.com/driv...P5?usp=sharing

  16. #16
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Bonjour,

    Postez votre code ici, car pratiquement personne n’ira sur google drive pour le télécharger ou le voir.

  17. #17
    Membre expérimenté
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juillet 2020
    Messages : 352
    Points : 1 376
    Points
    1 376
    Par défaut
    Ou alors éventuellement github ou similaire …

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    d'accord je verrai dans quel optique ne pas le déposer sur drive

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2020
    Messages : 11
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par ramzy05 Voir le message
    Salut la famille. j'ai récemment avancer avec mon tp et je suis buter au niveau de la question 4, au niveau de ma fonction rempli_resutat qui remplir le fichier résultat de la ligne 448 a 497(dans fonction.c). au fait cette fonction est sensé récupérer le NCIN, le nom , la moyenne au Bac , les notes en maths et en physique pour chaque candidat et écrire ces données dans resultat.txt
    mais après compilation et que j'appelle cette fonction ca ne marche pas, et j'obtiens ceci dans mon fichier resultat.txt:Nom : image1.JPG
Affichages : 301
Taille : 16,1 Ko, ce qui ne réponds pas a mes attentes s'il vous j'ai vraiment besoin de passer cette étape pour finir ce tp.
    voici ma fonction rempli_resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    int rempli_resutat(){
            Candidat a;
            Bacc b;
            Choix c;
                //ouverture des fichiers .txt pour le traitement de donnees
            FILE *fichier_candidat=fopen("fichier/liste_candidat.txt","r");
            FILE *fichier_bacc=fopen("fichier/bacc.txt","r");
            FILE *fichier_resultat=fopen("fichier/resultat.txt","w");
            if(fichier_candidat == NULL)
                printf("Erreur d'overture de fichier candidat");
            if(fichier_bacc == NULL)
                printf("Erreur d'overture de fichier bacc");
            if(fichier_resultat == NULL)
                printf("Erreur d'overture de fichier resultat");
     
            char decision_final1[100], ligne1[TAILLE_MAX_LIGNE], ligne2[TAILLE_MAX_LIGNE], ligne3[TAILLE_MAX_LIGNE];
            int enclencheur = 0;/*cette variable va nous permettre de parcourir les autres
                                    fichiers txt lorsqu'on recupere une ligne dans liste_candidat.txt*/
                //lisons candidat par candidat
            printf("\n");
            while(fgets(ligne1,TAILLE_MAX_LIGNE,fichier_candidat) != NULL){
                enclencheur++;
                sscanf(ligne1,"%d;%s;%s;%d\n",&a.NCIN,&a.NOM,&a.PRENOM,&a.AGE);       
                if (enclencheur != 0){//si vrai,on lira donc egalement le contenu ligne pas ligne des autres fichiers txt
                        // pour chaque candidat on recupere les donnees relatifs au au baccalaureat 
                    while(fgets(ligne2,TAILLE_MAX_LIGNE,fichier_bacc) != NULL){
                        sscanf(ligne2,"%d;%f;%s;%f;%f\n",&b.NCIN,&b.MOYENNE,&b.SERIEBACC,&b.NOTEMATH,&b.NOTEPHY);/*lect
                             d'une ligne de bacc.txt                                                      */                 
                        if (a.NCIN == b.NCIN){//ici on se focalise a la ligne au Numero de cni correspondant    
                                    /* passons maintenant
                                    au calcul qui aboutiront au contenu du nouveau champ DECISION*/
                                    if((b.MOYENNE > 12.00) || ( (10.00 <=b.MOYENNE <= 12.00) && ((b.NOTEMATH > 13.00) && (b.NOTEPHY > 13.00)))){  
                                        strcpy(decision_final1,"ADMIS");
                                    }else{
                                       strcpy(decision_final1,"REFUSE");                                  
                                    }  
                            fprintf(fichier_resultat,"%d;%s;%f;%f;%f;%s\n",b.NCIN,a.NOM,b.MOYENNE,b.NOTEMATH,b.NOTEPHY,decision_final1);                                                                 
                        }
                    }//FIN LECTURE LE LIGNE DANS bacc.txt
                }//SUCCES DE LECTURE POUR UNE LIGNE liste_candidat.txt
                enclencheur = 0;/* on remet la valeur iniatiale de cette variable avant de passer a la ligne suivante
                dans le fichier liste_candidat,txt; mais bon ceci n'a pas trop d'importance*/
            }//FIN DE LECTURE DE LIGNE DANS liste_candidat.txt
     
                //fermeture des fichiers a la fin du trsitement des donnnees
            fclose(fichier_candidat);
            fclose(fichier_bacc);
            fclose(fichier_resultat);
            return 1;
        }
    donc non seulement ca ne ne récupère pas pour tout les candidat, mais aussi ca rend nul les notes du candidat , comment palier a ce problème

  20. #20
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Tu as mis ton code dans la citation, malheureusement il manque la declaration des structures que tu utilises, il est important de savoir si les notes sont de type double ou float, et connaître la tailles des tableaux .nom, .prenom.
    En attendant, tu peux déjà commencer à restructurer ton code, par exemple:

    pseudocode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    int ta_fonction()
    {
        int erreur_id= x; //x symbolisant une erreur inconnue //utilisez une enumeration (enum)
        ouvrir_fichiers();
        si erreur, (implique renseigner erreur_id),  fermer_fichiers_ouverts et quitter_fonction en retournant erreur_id;
        /* //autre possibilité: 
            goto fin;
            //avec en fin de fonction:
            fin:
            si (fichier_x)
                fclose(fichier_x)
            ...
            return erreur_id;
        */
        //lectures fichiers
        while (1) {
            fgets sur fichier_1;
            fgets sur fichier_2;
            si erreur /lecture/, break //conf. éventuellement cppreference.com
            /*si erreur /taille tableau/, break*/ //si le risque existe
            sscanf ligne_1
            sscanf ligne_2
            si erreur, break
            comparaison des identifiants
            si erreur, break
            /*contrôle des notes...*/ //déclarations des structures et exemples de fichiers requis.
            fprintf sur fichier_3
            si erreur /ecriture/, break
        }
     
        //test si opérations sur fichiers ok
        si (erreur_id == erreur_lecture) && feof(fichier_1) && feof(fichier_2)
            reset erreur_id à 0
        /*fin:*/
        fermer_fichiers_ouverts; 
        return erreur_id;
    }
    voilà pour les grandes lignes.

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 04h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 15h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 09h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 12h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo