Aide c : gestion de note et de nom avec en utilisant un tableau de structure
cheza33
Messages postés4Date d'inscriptionmardi 20 janvier 2009StatutMembreDernière intervention27 janvier 2009
-
20 janv. 2009 à 21:00
cheza33
Messages postés4Date d'inscriptionmardi 20 janvier 2009StatutMembreDernière intervention27 janvier 2009
-
27 janv. 2009 à 21:35
Bonjour,
Voilàs j'ai réalisé un programme permettant de gerer des notes : saisi des notes, enregistrement, affichage, calcul de moyenne et lecture des notes. A présent, je souhaite pouvoir par le biai d'une structure contenant le nom et la note de l'étudiant, réaliser le même programme. J'ai consulter le site mais je n'ai pas trouver se que je recherché. De plus, étant débutante en language c, je ne connait pas toutes les fonctions et leurs utilisation. Je me suis renseigné sur les structures mais je n'arrive pas à comprendre comment l'intégrer dans ce programme.
Merci d'avance
Mon programme est :
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
// Declaration des variables
int choix;
long nb_notes;
double *note;
long nb_copie;
printf("\nVeuiller rentrer le nombre de notes que vous souhaitez saisir : ");
scanf("%d",&nb_notes);
// Declaration du tableau
note = (double*) malloc (nb_notes*sizeof(double));
printf("\nVeuillez choisir l'une des options suivantes:\n");
while (choix<1 || choix>5) {
printf("\nTapez 1 pour saisir les notes\n");
printf("Tapez 2 pour lire les notes\n");
printf("Tapez 3 pour enregistrer les notes\n");
printf("Tapez 4 pour calculer la moyenne\n");
printf("Tapez 5 pour afficher les notes\n");
printf("\nVotre choix est : ");
scanf("%ld",&choix);
switch (choix) {
case 1 :
nb_copie = saisie_note (nb_notes, note);
break;
case 2 :
lecture_note(nb_notes,note,nb_copie);
break;
case 3:
enregistrement_note (nb_notes,note,nb_copie);
break;
case 4:
moyenne_note (nb_notes,note,nb_copie);
break;
case 5:
afficher_note (nb_notes,note,nb_copie);
break;
}
choix=9;
}
}
//=====================================================================
// Fonction qui permet de saisir les notes
for (i=0;i<nb_copie;i++)
{
fprintf(file_pt,"%lf\n",note[i]);
}
fclose(file_pt);
}
//=====================================================================
// calculer la moyenne
void moyenne_note(long nb_notes,double *note,long nb_copie)
{
double moyenne,somme,S;
int i;
printf("nb_copie : %ld\n",nb_copie);
for (i=0;i<nb_copie;i++)
{
somme=somme+note[i];
}
moyenne=somme/(nb_copie);
printf("La moyenne est de : %lf\n",moyenne);
}
//=====================================================================
// afficher les notes
void afficher_note(long nb_notes, double *note, long nb_copie)
{
int i;
for (i=0;i<nb_copie;i++)
{
printf("%lf\n",note[i]);
}
}
cheza33
Messages postés4Date d'inscriptionmardi 20 janvier 2009StatutMembreDernière intervention27 janvier 2009 22 janv. 2009 à 20:22
Merci mais je voulais surtout savoir si dans le programme principal, quand on rempli les champs du tableau note et nom si il y avait une instruction particulière permettant de stocké les valeurs contenues dans les tableau directement dans la sturcture ou si cela se fesait automatiquement.
BunoCS
Messages postés15426Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention28 novembre 2023102 23 janv. 2009 à 09:31
Euh..j'ai pas bien compris la question.
Tu as le paragraphe 3.1.5 du lien qui parle des initialisations. Après, pour accéder à un membre, tu fais:
taStruct.tonMembre = taValeur;
Ai-je répondu à ta question?
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
cheza33
Messages postés4Date d'inscriptionmardi 20 janvier 2009StatutMembreDernière intervention27 janvier 2009 24 janv. 2009 à 14:37
le problème c que je n'ai pas une valeur unique car les valeurs sont contenues dans un tableau d'allocation dynamique et quand je tape taStruct.tonMembre = taValeur; il y a une erreur. Je suis vraiment bloqué car le programme fonctionne sans cette structure.
Merci du temps que vous m'accordez
Vous n’avez pas trouvé la réponse que vous recherchez ?
cheza33
Messages postés4Date d'inscriptionmardi 20 janvier 2009StatutMembreDernière intervention27 janvier 2009 27 janv. 2009 à 21:35
Bonjour,
J'ai finalement réussi à avancer merci beaucoup cependant j'ai un problème au niveau du calcul de la moyenne, en effet, le résultat est faux et je ne comprend pas mon erreur.
Merci beaucoup de vos réponsse.
Mon programme est le suivant :
//protocole des fonction
long saisie_note (long , fiche*);
void lecture_note(long , fiche*,long);
void enregistrement_note(long ,fiche*,long );
void moyenne_note(fiche*,long);
void afficher_note(long ,fiche*,long);
using namespace std;
//programme pincipale
int main()
{
int choix;
long nb_note,nb_reel;
fiche *tablo_note;
nb_reel=0;// nombre de note reellement entre
printf("\nBienvenue dans le programme vous permettant de saisir les notes de vos eleves\n");
printf("\n\nVeuiller rentrer une evaluation du nombre de notes que vous souhaitez saisir : \n");
scanf("%ld",&nb_note);
// creation du tableau de notes surevalué
tablo_note=(fiche*)malloc(nb_note*sizeof(fiche));
do
{
printf("\nVeuillez choisir l'une des options suivantes:\n");
printf("Tapez 1 pour saisir les notes\n");
printf("Tapez 2 pour lire les notes\n");
printf("Tapez 3 pour enregistrer les notes\n");
printf("Tapez 4 pour calculer la moyenne\n");
printf("Tapez 5 pour afficher les notes\n");
printf("Tapez 0 pour quitter le programme\n");
printf("\nVotre choix est : ");
scanf("%d",&choix);
switch (choix)
{
case 1 :
nb_reel = saisie_note(nb_note,tablo_note);
choix=9;
break;
case 2:
lecture_note(nb_note,tablo_note,nb_reel);
choix=9;
break;
case 3:
enregistrement_note(nb_note,tablo_note,nb_reel);
choix=9;
break;
case 4:
moyenne_note(tablo_note,nb_reel);
choix=9;
break;
case 5:
afficher_note(nb_note,tablo_note,nb_reel);
choix=9;
break;
//=====================================================================
// Fonction qui permet de saisir les notes
long saisie_note (long nb_note,fiche *Y)
{
long nb_reel;
int i;
double notes;
char nom[20];
i=0;
printf("\nVeuillez rentrer les notes de vos eleve : une seule note par eleve\n");
printf("Pour sortir, veuillez donner une note inferieure a 0. \n\n");
//initialisation
notes=0;
nb_reel=0;
while ( (notes>=0 && notes<=20) && i<nb_note-1)
{
printf("taper le nom : ",i+1);
scanf("%s",&Y[i].nom);
printf("taper la note : ",i+1);
scanf("%lf",&Y[i].note);
notes =Y[i].note;
i++;
}
nb_reel=(i-1);
printf ("\nle nombre de note que vous avez entree est de : %ld \n",nb_reel);
return(nb_reel);
}
//=====================================================================
// lecture des notes
for (i=0;i<nb_reel;i++)
{
fprintf(file_pt,"%s\t %.2lf\n",Y[i].nom,Y[i].note);
}
fclose(file_pt);
printf("L'enregistrement a bien ete effectue dans le fichier texte notes.txt\n");
}
//=====================================================================
// calculer la moyenne
void moyenne_note(fiche *Y,long nb_reel)
{
int i;
double a,somme,moyenne,note;
i=0;
note=0;
for (i=0;i<nb_reel;i++)
{
note=Y[i].note;
somme=somme + note;
}
moyenne=somme/(nb_reel);
printf("\nLa moyenne de la classe est de : %lf \n",moyenne);
}
//=====================================================================
// afficher les notes
void afficher_note(long N,fiche *Y,long nb_reel)
{
int i;
for (i=0;i<nb_reel;i++)
{
printf("%s\t %.2lf\n",Y[i].nom,Y[i].note);