Rendre mon programme robuste
akybienvenu
Messages postés
48
Date d'inscription
Statut
Membre
Dernière intervention
-
akybienvenu Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
akybienvenu Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
salut,
j'ai fini un programme qui me permet le calcul des moyenne mais
j'ai des limites au niveau de la saisir des chaine de caractères (je ne peux pas mettre d'espace entre les chaine caractère ) j'ai essaye d'utiliser la fonction fget mais je n'arrive pas vraiment a l'utiliser dans mon programme et aussi je voudrais éviter de déclarer mes variables en variable globale.
excusez moi si mon programme ne pas assez lisible.
je précise que je suis un débutant merci
code
j'ai fini un programme qui me permet le calcul des moyenne mais
j'ai des limites au niveau de la saisir des chaine de caractères (je ne peux pas mettre d'espace entre les chaine caractère ) j'ai essaye d'utiliser la fonction fget mais je n'arrive pas vraiment a l'utiliser dans mon programme et aussi je voudrais éviter de déclarer mes variables en variable globale.
excusez moi si mon programme ne pas assez lisible.
je précise que je suis un débutant merci
code
#include <stdio.h> #include <stdlib.h> int NbreIngenieurs; int NbreDeMatieres; int i; int j; typedef struct { char classe[100]; char nom[100]; char prenom[200]; int matricule; float note[150]; float coefficient[20]; float NoteCoefficienter; float LaMoyenne; }Ingenieur; typedef Ingenieur TableDesIng[15]; TableDesIng t1; void presentation(); void lire(); void SaisirNotes(); void moyenne(); int main() { printf("bienvenue dans le programme qui vous permet de calculer vos moyennes\n");printf("\n"); printf("voulez-vous calculer la moyenne de combien ingenieur??\n");scanf("%d",&NbreIngenieurs);printf("\n"); printf("l'ingenieur a t-il compose dans combien de matiere?\n");scanf("%d",&NbreDeMatieres);printf("\n"); printf("renseigner les informations de la liste\n");printf("\n"); presentation(); printf("\n"); SaisirNotes(); printf("\n"); lire(); printf("\n"); moyenne(); printf("\n"); printf("............travail achever................\n"); printf(". .\n"); printf(". .\n"); printf(". .\n"); printf("...........MIT Akyb vouz remercie..........\n"); printf("Ce fichier a ete compile le %s a %s\n", __DATE__, __TIME__); } void presentation() { for(i=0;i<NbreIngenieurs;i++) { printf("entrez le nom de l'ingenieur %d\n ",i+1);scanf("%s",&t1[i].nom); printf("entrez le prenoms de l'engenieur %d\n ",i+1);scanf("%s",&t1[i].prenom); printf("entrez le matricule de l'ingeieur %d\n ",i+1);scanf("%d",&t1[i].matricule); printf("entrez la classe de l'ingenieur %d\n ",i+1);scanf("%s",&t1[i].classe); } printf("voici la liste\n");printf("\n"); for(i=0;i<NbreIngenieurs;i++) { printf("Nom: %s Prenoms: %s Matricule: %dINP Classe: %s",t1[i].nom,t1[i].prenom,t1[i].matricule,t1[i].classe);printf("\n"); } } void SaisirNotes() { printf("LES DIFFERENTES MOYENNES OBTENUES PAR L'INGENIEUR DANS CHAQUE MATIERE SONT:\n");printf("\n"); for(i=0;i<NbreIngenieurs;i++) { printf(" la moyenne obtenue par l'ingenieur %s\n ",t1[i].nom );printf("\n"); for(j=0;j<NbreDeMatieres;j++) { printf("dans la matiere : %d\n ", j+1);printf("\n");scanf("%f",&t1[i].note[j]); printf(" entrer le coefficient : %d\n",j+1);printf("\n");scanf("%f",&t1[i].coefficient[j]); } } } void lire() { printf("les igenieurs et leur differentes moyennes suivit des coefficients \n"); for(i=0;i<NbreIngenieurs;i++) { printf("l'ingenieur : %s %s\n",t1[i].nom,t1[i].prenom ); for(j=0;j<NbreDeMatieres;j++) { t1[i].NoteCoefficienter +=t1[i].coefficient[j]*t1[i].note[j]; } printf(".........MOYENNE COEFFICIENTER.........:%f",t1[i].NoteCoefficienter) ; printf("\n\n"); } } void moyenne() { float TotalDesNoteCoefficienter; float TotalDesCoefficient; TotalDesNoteCoefficienter = 0;// la valeur initiale est vitale TotalDesCoefficient = 0; // la valeur initiale est vitale float LaMoyenne=0; printf("voici les moyennes des differents ingenieurs \n"); for ( i=0 ; i<NbreIngenieurs ; i++ ) { printf( "l'ingenieur : %s %s\n" , t1[i].nom , t1[i].prenom ); for ( j=0 ; j<NbreDeMatieres ; j++ ) { TotalDesNoteCoefficienter += t1[i].note[j]*t1[i].coefficient[j]; // cumul des notes coefficientées TotalDesCoefficient += t1[i].coefficient[j]; // cumul des tous les coef } // on fin de la 2ieme boucle for ici t1[i].LaMoyenne=( TotalDesNoteCoefficienter/TotalDesCoefficient); printf( "SA MOYENNE EST : \n" ); printf("\n\n"); printf(". .\n"); printf("...........................................\n"); printf(". est %f .\n", t1[i].LaMoyenne ); printf("...........................................\n"); TotalDesNoteCoefficienter = 0;// la valeur initiale est vitale TotalDesCoefficient = 0; // la valeur initiale est vitale } //fin de la la 1ere boucle for }
A voir également:
- Rendre mon programme robuste
- Programme demarrage windows - Guide
- Comment rendre un fichier moins lourd - Guide
- Message programmé iphone - Guide
- Mettre en veille un programme - Guide
- Programme word gratuit - Guide
1 réponse
Salut akybienvenu,
j'ai des limites au niveau de la saisir des chaine de caractères (je ne peux pas mettre d'espace entre les chaine caractère )
Si tu veux dire qu'en utilisant scanf, tu n'arrives pas à récupérer une saisie complète si elle comporte un espace, tu peux faire ceci en contrôlant de plus la quantité de caractères lus au maximum par scanf :
j'ai essaye d'utiliser la fonction fget mais je n'arrive pas vraiment a l'utiliser dans mon programme
tu veux dire fgets ?
Si oui, vois http://www.faqs.org/faqs/C-faq/faq/ et le code proposé à la réponse à la question 7.1
et aussi je voudrais éviter de déclarer mes variables en variable globale.
Déclare les dans main, et passe les en arguments à tes fonctions.
Dal
j'ai des limites au niveau de la saisir des chaine de caractères (je ne peux pas mettre d'espace entre les chaine caractère )
Si tu veux dire qu'en utilisant scanf, tu n'arrives pas à récupérer une saisie complète si elle comporte un espace, tu peux faire ceci en contrôlant de plus la quantité de caractères lus au maximum par scanf :
char ch[100]={0}; int c; if (scanf("%99[^\n]",ch) == 1) { printf("J'ai récupéré : [%s]\n", ch); /* scanf n'inclue pas \n qui reste toujours dans * le flux, qu'il faut donc purger, autrement, il sera * lu par un prochain scanf. * Utiliser la boucle suivante pour purger le flux stdin */ while ((c = getchar()) != '\n' && c != EOF) /* discard */ ; }
j'ai essaye d'utiliser la fonction fget mais je n'arrive pas vraiment a l'utiliser dans mon programme
tu veux dire fgets ?
Si oui, vois http://www.faqs.org/faqs/C-faq/faq/ et le code proposé à la réponse à la question 7.1
et aussi je voudrais éviter de déclarer mes variables en variable globale.
Déclare les dans main, et passe les en arguments à tes fonctions.
Dal
l et merci pour tes réponses