#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define etudian_num 400
struct etudiant{
char nom[10];
float moy;
int matricule;
};
void SaisirEtudiant(struct etudiant E,FILE *ficheierEtudiant){
ficheierEtudiant = fopen("C:/Users/Ayoub/Desktop/TDTP/Ex1/Etudiant.dat","wb");
char rep;
do {
fseek(ficheierEtudiant, 0, SEEK_END);
printf("Saisir Matricule de L etudiant: ");
scanf("%i",&E.matricule);
printf("Saisir nom etudiant a saisir: ");
scanf("%s",&E.nom);
printf("Saisir son Moyen: ");
scanf("%f",&E.moy);
fwrite (&E, sizeof(struct etudiant), 1,ficheierEtudiant);
if(fwrite!=0){
printf("\n\nEtudaint Ajouter avec succees !\n\n");
}
printf("Voulez Vouz Saisir un autre Etudiant (O,N): ");
scanf(" %c",&rep);
}while(toupper(rep)!='N');
fclose(ficheierEtudiant);
}
void AjoutEtudian(struct etudiant E,FILE *ficheierEtudiant){
ficheierEtudiant=fopen("C:/Users/Ayoub/Desktop/TDTP/Ex1/Etudiant.dat","ab+");
printf("Saisir Matricule de Nouveau Etudiant: ");
scanf("%i",&E.matricule);
printf("Saisir Nom de Nouveau Etudiant: ");
scanf("%s",&E.nom);
printf("Saisir Son Moyen: ");
scanf("%f",&E.moy);
fwrite (&E, sizeof(struct etudiant), 1,ficheierEtudiant);
printf("Saisir de nouveau Etudiant avec Success ! ");
fclose(ficheierEtudiant);
}
void AfficheListe(struct etudiant E, FILE* fichierEtudiant){
fichierEtudiant=fopen("C:/Users/Ayoub/Desktop/TDTP/Ex1/Etudiant.dat","r+");
while(fread(&E,sizeof(struct etudiant),1,fichierEtudiant)){
printf("\nMatricule: %i | Nom Etudiant: %s| Moyen= %.2f \n",E.matricule,E.nom,E.moy);}
fclose(fichierEtudiant);
}
void ModifierEtudiant(struct etudiant E,FILE* fichierEtudiant){
fichierEtudiant=fopen("C:/Users/Ayoub/Desktop/TDTP/Ex1/Etudiant.dat","rb+");
int MatRecherche;
printf("Saisir Le Matricule de letudiant a modifier son Moyen: ");
scanf("%i",&MatRecherche);
float Moyenancianen=0.0;
float NouveauMoyen;
int p;
while(fread(&E,sizeof(E),1,fichierEtudiant)){
if(E.matricule==MatRecherche){
fseek(fichierEtudiant,-(long)sizeof(E),1);
printf("Saisir Nouveau Moyen pour %s:",E.nom);
scanf("%f",&NouveauMoyen);
Moyenancianen=E.moy;
E.moy=NouveauMoyen;
fwrite (&E, sizeof(E), 1,fichierEtudiant);
printf("\n\nMoyen Ancien = %.2f , Nouveau Moyen = %.2f\n\n",Moyenancianen,NouveauMoyen);
break;
}
}
fclose(fichierEtudiant);
}
void suprimList(struct etudiant E , FILE* fichierEtudiant){
fichierEtudiant=fopen("C:/Users/Ayoub/Desktop/TDTP/Ex1/Etudiant.dat","w");
printf("Contenu Supprime! ");
fclose(fichierEtudiant);
}
void min_moy(struct etudiant E , FILE* fichierEtudiant){
fichierEtudiant=fopen("C:/Users/Ayoub/Desktop/TDTP/Ex1/Etudiant.dat","rb+");
float min=0.0;
int pos=0;
float T[30];
int LongeurTableau=0;
//Affectation de Moyenne dans un tableau T et Calcul de sa Taille
while(fread(&E,sizeof(struct etudiant),1,fichierEtudiant)){
T[LongeurTableau]=E.moy;
LongeurTableau++;
}
//Determiner la position de Moyen le Plus Bas
min=T[0];
for(int j=0;j<LongeurTableau;j++){
while(T[j]<min){
pos=j;
min=T[j];
}
}
fseek(fichierEtudiant,0,pos);
fread(&E,sizeof(struct etudiant),1,fichierEtudiant);
printf("%s a eu la Moyenne Le Plus Bas avec un Moyen = %.2f",E.nom,E.moy);
}
void Menu(){
printf("Press: \n");
printf("\t\n1-Pour Ajouter un Nouveau List des Etudiant\n");
printf("\t\n2-pour Afficher Liste des Etudiant \n");
printf("\t\n3-pour Ajouter un Nouveau Etudiant \n");
printf("\t\n4-pour Modifier Moyen d un EtudainT\n");
printf("\t\n5-pour Afficher Liste de Menu\n");
printf("\t\n6-pour Supprimer La liste\n");
printf("\t\n7-pour Avoir Le minimum Moyenne: \n");
printf("\t\n8-Pour Quitter \n");
}
int main()
{ printf("\t\t***************************Programme de Gestion des Etudiants***************************\n\n\n\n");
FILE *fichierEtudiant;
struct etudiant E;
float NouveauMoyen;
int choice;
int num;
int quit=0;
Menu();
while(quit==0){
printf("\nSaisir Votre Choix: ");
scanf(" %d",&choice);
switch(choice){
case 1:
SaisirEtudiant(E,fichierEtudiant);
break;
case 2:
AfficheListe(E,fichierEtudiant);
break;
case 3:
AjoutEtudian(E,fichierEtudiant);
break;
case 4:
ModifierEtudiant(E,fichierEtudiant);
break;
case 5:
Menu();
break;
case 6:
suprimList(E,fichierEtudiant);
break;
case 7:
min_moy(E,fichierEtudiant);
break;
case 8:
quit =1;
printf("\n\nA bientot.....\n\n\n");
break;
}
}
//Souid_Ayoub
}
программа предназначена для учеников, она выводит их оценки, их имена и т. Д ... я пытаюсь выяснить, кто из учеников получил минимальную оценку, которую он работает, когда я нашел положение ученика, создав массив floatи нашел позицию минимального числа в массиве, затем попытался указать, используя эту позицию, и прочитал имя, а отметка ученика выглядит так, как будто не сработало имя метода (min_moy).