Probleme de langage C
Dark-Boy
-
timike972 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
timike972 Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Bojour j'ai cree un programme qui marche mais le probleme c'est que je n'arrive pas a faire une recherche correcte des moyenne .
Lorsque que je saisie par exemple les moyenne 14, 15, 9 etc .... , cela marche , mon programme me donne la liste des eleve ayant eu cette moyenne mais lorsque que je saisie par exemple un nombre a virgule , qui correspon a un eleve donne la moyenne comporte des chiffre apres la virgule par exemple 10.33 , 10.5 etc.... cela ne marche pas .
J'aimerai obtenir de l'aide, un indice , j'ai cherché de partout mais je ne trouve l'origine de ce problème.
Voici mon code ci-dessu
le probleme se situe a ce niveau:
je vous remerci d'avance pour votre aide, la compilation marche .
Bojour j'ai cree un programme qui marche mais le probleme c'est que je n'arrive pas a faire une recherche correcte des moyenne .
Lorsque que je saisie par exemple les moyenne 14, 15, 9 etc .... , cela marche , mon programme me donne la liste des eleve ayant eu cette moyenne mais lorsque que je saisie par exemple un nombre a virgule , qui correspon a un eleve donne la moyenne comporte des chiffre apres la virgule par exemple 10.33 , 10.5 etc.... cela ne marche pas .
J'aimerai obtenir de l'aide, un indice , j'ai cherché de partout mais je ne trouve l'origine de ce problème.
Voici mon code ci-dessu
/ #include <stdio.h> #include <stdlib.h> #include <string.h> /*Déclaration de la structure eleve*/ struct eleve{ double n1; double n2; double n3; double moyenne; char nom[600]; }; /* element du tableau (trait,lignes, colonnes)*/ typedef struct eleve eleve; void element_tablo(){ printf("\n_____________________________________\n"); printf("Nom |note1|note2|note3|Moyenne|"); printf("\n_____________________________________\n"); } void element_tablo1(){ printf("\n___________________\n"); printf("Nom |Moyenne|"); printf("\n___________________\n"); } void element_tablo2(){ printf("-------------------------------------\n"); } void element_tablo3(){ printf("--------------------\n"); } void presentation_menu() { /* === Menu ====*/ printf("\n\n ==== Menu ==== \n\n"); printf("\n Voulez vous : \n"); printf("\n 1. Afficher le tableau par ordre alphabetique "); printf("\n 2. Afficher le tableau par ordre de merite (moyenne) "); printf("\n 3. Afficher la meilleur moyenne ainsi que la plus mauvaise ainsi que l'eleve concerne "); printf("\n 4. Afficher le tableau qui elimine les moyenne inférieur a 3 "); printf("\n 5. Chercher une moyenne donnée et afficher tous les élèves ayant cette moyenne "); printf("\n 6. Chercher un élève donné et afficher ses notes "); printf("\nVeuillez saisir le nombre correspondant a votre choix puis appuyez sur la touche 'ENTREE' ou quitter en appuyant sur d'autres touches'\n\n "); } int main(void){ /*Declaration de variable*/ int i,k,a,j,choix,b; double moyennes; /*appel de la structure*/ eleve tablo[600]; eleve echange; /* Message du commencement de la saisie */ printf("\nVous allez saisir un tableau contenant des noms d'eleves ainsi que leurs 3 notes.\n\n"); printf("Saisissez le nombre d'elève qu'il y'aura dans le tableau:\n"); /* Saisie du tableau */ scanf("%d",&k); for (i=0;i<k;i++){ a=i+1; printf("\n Tapez le nom de l'eleve n° %d :",a); scanf("%s",tablo[i].nom); printf("\n Saisissez la premiere note (n1) de l'eleve %s: ",tablo[i].nom); scanf("%lf",&tablo[i].n1); printf("\n Saisissez la deuxieme note (n2) de l'eleve %s: ",tablo[i].nom); scanf("%lf",&tablo[i].n2); printf("\n Saisissez la troisieme note (n3) de l'eleve %s: ",tablo[i].nom); scanf("%lf",&tablo[i].n3); tablo[i].moyenne = (tablo[i].n1+tablo[i].n2+tablo[i].n3)/3 ; } /* Affichage du tableau saisie*/ printf("\n == saisie du tableau == \n"); element_tablo(); for(i=0;i<k;i++){ printf("%10s|",tablo[i].nom); printf("%5.2lf|%5.2lf|%5.2lf|%5.2lf |\n",tablo[i].n1,tablo[i].n2,tablo[i].n3,tablo[i].moyenne); } element_tablo2(); /*presentation du menu*/ presentation_menu(); /* fonction menu*/ int menu(){ char compar_nom; scanf("%d",&choix); switch(choix){ case 1: /* tableau trié par ordre alphabetique (choix 1)*/ /* tri par ordre par ordre alpahabetique*/ for(i=0;i<k;i++) { for(j=k-1;j>i;j--) { if(strcmp(tablo[j].nom,tablo[j-1].nom)<0) { /* echange=tablo[j].nom; tablo[j].moyenne=tablo[j-1].nom; tablo[j-1].moyenne=nom;*/ memcpy(&echange,&tablo[j],sizeof(echange)); memcpy(&tablo[j],&tablo[j-1],sizeof(echange)); memcpy(&tablo[j-1],&echange,sizeof(echange)); } } } /*Affichage du tableau trié par ordre alphabetique*/ printf("\n * tableau trié par ordre alphabetique *"); element_tablo(); for(i=0;i<k;i++){ printf("%10s|",tablo[i].nom); printf("%5.2lf|%5.2lf|%5.2lf|%5.2f |\n",tablo[i].n1,tablo[i].n2,tablo[i].n3,tablo[i].moyenne); } element_tablo2(); presentation_menu(); menu(); break; case 2: /* tableau trié par ordre de merite (choix2)*/ /* trie par ordre de merite*/ for(i=0;i<k;i++) { for(j=k-1;j>i;j--) { if(tablo[j].moyenne>tablo[j-1].moyenne) { memcpy(&echange,&tablo[j],sizeof(echange)); memcpy(&tablo[j],&tablo[j-1],sizeof(echange)); memcpy(&tablo[j-1],&echange,sizeof(echange)); } } } /*Affichage du tableau trié par ordre du merite*/ printf("\n* tableau par ordre de merite*"); element_tablo(); for(i=0;i<k;i++){ printf("%10s|",tablo[i].nom); printf("%5.2lf|%5.2lf|%5.2f|%5.2lf |\n",tablo[i].n1,tablo[i].n2,tablo[i].n3,tablo[i].moyenne); } element_tablo2(); presentation_menu(); menu(); break; case 3: /* Affichage de la meilleur moyenne et de la plus mauvaise (choix 3)*/ /* tri de la moyenne*/ for(i=0;i<k;i++) { for(j=k-1;j>i;j--) { if(tablo[j].moyenne>tablo[j-1].moyenne) { memcpy(&echange,&tablo[j],sizeof(echange)); memcpy(&tablo[j],&tablo[j-1],sizeof(echange)); memcpy(&tablo[j-1],&echange,sizeof(echange)); } } } /* Affichage de la meilleur moyenne (tablo[0]).moyenne*/ printf("\n == moyenne la plus haute == "); element_tablo1(); for(i=0;i<k;i++) { if(tablo[i].moyenne==tablo[0].moyenne) { printf("%10s |",tablo[i].nom); printf("%5.2f |\n",tablo[i].moyenne); } } element_tablo3(); /*Affichage de la plus mauvaise moyenne*/ /* tri des moyennes ( de la plus basse a la plus haute) */ for(i=0;i<k;i++){ for(j=k-1;j>i;j--) { if(tablo[j].moyenne<tablo[j-1].moyenne) { memcpy(&echange,&tablo[j],sizeof(echange)); memcpy(&tablo[j],&tablo[j-1],sizeof(echange)); memcpy(&tablo[j-1],&echange,sizeof(echange)); } } } /* Affichage de la plus basse moyenne (tablo[0].moyenne)*/ printf("\n== moyenne la plus basse =="); element_tablo1(); for(i=0;i<k;i++) { if(tablo[i].moyenne==tablo[0].moyenne) { printf("%10s |",tablo[i].nom); printf("%5.2f |\n",tablo[i].moyenne); } } element_tablo3(); presentation_menu(); menu(); break; case 4: /* Eliminer les moyennes inferieure a 3 et egale (choix 4) */ printf("\nDans ce tableau les eleves ayant une moyenne inferieur a 3 ne sont pas represente\n"); element_tablo1(); for(i=0;i<k;i++) { if(tablo[i].moyenne >3) { printf("%10s |",tablo[i].nom); printf("%5.2f |\n",tablo[i].moyenne); } } element_tablo3(); presentation_menu(); menu(); break; case 5: /* Rechercher une moyenne et afficher les eleves ayant cette moyenne (choix 5)*/ printf( "\n recherche moyenne \n"); printf(" Veuillez saisir la moyenne recherche et appuyez sur ' Entree ': "); scanf("%lf",&moyennes); printf("\nvoici les eleves ayant la moyennes que vous recherchiez\n"); element_tablo1(); for(i=0;i<k;i++){ if(tablo[i].moyenne == moyennes) { printf("%10s |",tablo[i].nom); printf("%5.2lf |\n",tablo[i].moyenne); } } element_tablo3(); presentation_menu(); menu(); break; case 6: /* Rechercher un eleve donné et afficher ses notes*/ printf( "\n rechercher un nom et afficher ses notes \n"); printf(" Veuillez saisir le nom recherche et appuyez sur ' Entree ': "); scanf("%s",&compar_nom); element_tablo(); for(i=0;i<k;i++){ if(strcmp(&compar_nom,tablo[i].nom) == 0) { printf("%10s |",tablo[i].nom); printf("%5.2lf|%5.2lf|%5.2lf|%5.2lf |\n",tablo[i].n1,tablo[i].n2,tablo[i].n3,tablo[i].moyenne); } } element_tablo2(); presentation_menu(); menu(); break; default: printf("\n A bientot \n\n"); break; } } /* Appel de la fonction menu()*/ menu(); }
le probleme se situe a ce niveau:
case 5: /* Rechercher une moyenne et afficher les eleves ayant cette moyenne (choix 5)*/ printf( "\n recherche moyenne \n"); printf(" Veuillez saisir la moyenne recherche et appuyez sur ' Entree ': "); scanf("%lf",&moyennes); printf("\nvoici les eleves ayant la moyennes que vous recherchiez\n"); element_tablo1(); for(i=0;i<k;i++){ if(tablo[i].moyenne == moyennes) { printf("%10s |",tablo[i].nom); printf("%5.2lf |\n",tablo[i].moyenne); } } element_tablo3(); presentation_menu(); menu(); break;
je vous remerci d'avance pour votre aide, la compilation marche .
A voir également:
- Probleme de langage C
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation