Un exercice langage C urgent
khal22
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
khal22 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
khal22 Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
bonsoir si quelqun peut m'aider j'ai un exercice de programmation en language C et merci d'avance :
exercice:[u][/u]
le fichier "etudiants.txt" décrit les différents etudiants:
-cin :un long sur 8 caracteres
-nom: une chaine de caractere sur 15 caracteres
-prenom: une chaine de caractere sur 15 caracteres
-num_inscription: un long sur 8 caracteres
-classe: une chaine de caractere sur 10 caracteres
-matiere: une chaine de caractere sur 10 caracteres
-note_controle: un réel sur 5 caracteres
-note_examen: un réel sur 5 caracteres
on vous demande d'ecrire les fonctions suivantes:
1) saisir_fichiers (FILE *fp_etudiant)
{
}
qui permet de saisir les données dans le fichiers "etudiant.txt" avec contraints de saisie
2) File * Moyenne_etudiant(FILE *fp_etudiant)
{
}
qui permet de générer un fichier "moyenne.txt" qui contient le cin ,le nom ,le prenom ainsi que la moyenne de tous les etudiants du fichier "etudiant.txt"
3)rattrapage (FILE *fp_etudiant)
{
}
qui permet de générer un fichier d'afficher la liste des etudiantsqui vont passer l'examen de rattrapage et les matiéres à.
4) modifier_etudiant (FILE * fp_etudiant, long cin)
{
}
qui permet de modifier l'une des notes d'un etudiant donné
5) matière_premier(FILE * fp_etudiant, char * matiere)
{
}
qui permet d'afficher (l'/les) etudiant(s) 1er dans une discipline donnée.
6) recherche_inscri( FILE * fp_etudiant, char * nom, char * prenom)
{
}
un etudiant veut rechercher son numero d'inscription ,pour cela, il tape au clavier son nom, prenom et le programme doit afficher son nom ,son prenom , son numero d'inscription et la classe auquelle il appartient. La recherche doit etre une recherche dichotomique.
7) tri_croissant( FILE * fp_etudiant)
{
}
trier dans l'ordre croissant les noms des etudiants.
moi je l'ai trouvé trés difficile s'il vous plait quelqun peut m'aider.
Merci
exercice:[u][/u]
le fichier "etudiants.txt" décrit les différents etudiants:
-cin :un long sur 8 caracteres
-nom: une chaine de caractere sur 15 caracteres
-prenom: une chaine de caractere sur 15 caracteres
-num_inscription: un long sur 8 caracteres
-classe: une chaine de caractere sur 10 caracteres
-matiere: une chaine de caractere sur 10 caracteres
-note_controle: un réel sur 5 caracteres
-note_examen: un réel sur 5 caracteres
on vous demande d'ecrire les fonctions suivantes:
1) saisir_fichiers (FILE *fp_etudiant)
{
}
qui permet de saisir les données dans le fichiers "etudiant.txt" avec contraints de saisie
2) File * Moyenne_etudiant(FILE *fp_etudiant)
{
}
qui permet de générer un fichier "moyenne.txt" qui contient le cin ,le nom ,le prenom ainsi que la moyenne de tous les etudiants du fichier "etudiant.txt"
3)rattrapage (FILE *fp_etudiant)
{
}
qui permet de générer un fichier d'afficher la liste des etudiantsqui vont passer l'examen de rattrapage et les matiéres à.
4) modifier_etudiant (FILE * fp_etudiant, long cin)
{
}
qui permet de modifier l'une des notes d'un etudiant donné
5) matière_premier(FILE * fp_etudiant, char * matiere)
{
}
qui permet d'afficher (l'/les) etudiant(s) 1er dans une discipline donnée.
6) recherche_inscri( FILE * fp_etudiant, char * nom, char * prenom)
{
}
un etudiant veut rechercher son numero d'inscription ,pour cela, il tape au clavier son nom, prenom et le programme doit afficher son nom ,son prenom , son numero d'inscription et la classe auquelle il appartient. La recherche doit etre une recherche dichotomique.
7) tri_croissant( FILE * fp_etudiant)
{
}
trier dans l'ordre croissant les noms des etudiants.
moi je l'ai trouvé trés difficile s'il vous plait quelqun peut m'aider.
Merci
A voir également:
- Un exercice langage C urgent
- 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
3 réponses
Plutôt que de réciter ton exercice et de dire que tu le trouves difficile, dis-nous ce que tu as compris, ce que tu as commencé à faire, et ce que tu n'arrives pas à faire. Sans ce préalable, tu n'auras aucune aide...
j'ai fais ça mais je suis sure qu'il est faux :/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void saisir_fichier(FILE* fp_etudiant);
void menu();
int verif_lettre(char* c);
int verif_cin(char *ncin,FILE *fp);
int chiffre(char* c);
void ajouter_etudiant();
FILE* moyenne_etudiant(FILE* fp_etudiant);
void modifier_note(FILE* fp);
void recherche_par_cin(FILE* fp);
void rattrapage();
void main()
{
FILE *fp_etudiant=NULL;
int choix;
do
{
menu();
do
{
scanf("%d",&choix);
if(choix<0||choix>6)
printf("choix invalide\n");
}while(choix<0||choix>6);
switch (choix)
{
case 1 : saisir_fichier(fp_etudiant); break;
case 2 : moyenne_etudiant(fp_etudiant); break;
case 3 : modifier_note(fp_etudiant); break;
case 4 : rattrapage(); break;
case 0 : exit(0);
}
}while(1);
}
void menu()
{
printf("1.saisir les donnees d'un etudiant\n");
printf("2.liste de ratrappage\n");
printf("3.modifier la note d'un etudiant\n");
printf("4.afficher (l'/les)etudiant(s) qui (est/sont) 1er(s) dans la matiere\n");
printf("5.recherche num. d'inscri d'un etudiant\n");
printf("6.trier les etudiant par ordre alphabetique\n");
}
void saisir_fichier(FILE* fp_etudiant)
{
char ch[200]="",ch2[200]="";
char cin[8]="";
char num_inscri[8]="",classe[10]="",matiere[10]="";
float note_control,note_exam;
char prenom[15]="";
char nom[15]="";
int i;
printf("entrer le cin de l'etudiant : ");
do
{
scanf("%s",cin);
}while(strlen(cin)!=8||!chiffre(cin)||!verif_cin(cin,fp_etudiant));
fp_etudiant=fopen("etudiant.txt","r+");
if(fp_etudiant!=NULL)
{
while(fgetc(fp_etudiant)!=EOF);
fputc('\n',fp_etudiant);
fputs(cin,fp_etudiant);
fclose(fp_etudiant);
}
printf("\nentrer le prenom de l'etudiant : ");
do
{
scanf("%s",prenom);
}while(strlen(prenom)>15||strlen(prenom)<1||!verif_lettre(prenom));
printf("\nentrer le nom de l'etudiant : ");
do
{
scanf("%s",nom);
}while(strlen(nom)>15||strlen(nom)<1||!verif_lettre(nom));
printf("\nentrer le num. d'inscri de l'etudiant : ");
do
{
scanf("%s",num_inscri);
}while(strlen(num_inscri)!=8||!chiffre(num_inscri)||!verif_cin(num_inscri,fp_etudiant));
printf("\nentrer la classe de l'etudiant : ");
do
{
scanf("%s",classe);
}while(strlen(classe)<1||strlen(classe)>10);
printf("\nentrer la matiere: ");
do
{
scanf("%s",matiere);
}while(!verif_lettre(matiere)||strlen(matiere)<1||strlen(matiere)>10);
printf("\nentrer le note de controle de l'etudiant : ");
do
{
scanf("%f",¬e_control);
}while(note_control<0||note_control>20);
printf("\nentrer le note de l'exam de l'etudiant : ");
do
{
scanf("%f",¬e_exam);
}while(note_exam<0||note_exam>20);
sprintf(ch," %-20s %-20s %8s %-10s %-10s %-10f %-10f",nom,prenom,num_inscri,classe,matiere,note_control,note_exam);
fp_etudiant=fopen("etudiant.txt","a");
if(fp_etudiant!=NULL)
{
fputs(ch,fp_etudiant);
fclose(fp_etudiant);
}
}
int verif_cin(char *ncin,FILE *fp)
{
char ch[200];
rewind(fp);
while(fgets(ch,199,fp))
{
if(!memcmp(ch,ncin,8))
{
printf("CIN existe deja \n ");
return(0);
}
}
return(1);
}
int verif_lettre(char* c)
{
int i;
for(i=0;i<strlen(c);i++)
{
if((c[i]<='z'&&c[i]>='a')||(c[i]<='Z'&&c[i]>='A'))
return 1;
}
return 0;
}
int chiffre(char* c)
{
int i;
for(i=0;i<strlen(c);i++)
{
if(c[i]<='9'&&c[i]>='0')
return 1;
}
return 0;
}
FILE* moyenne_etudiant(FILE* fp_etudiant)
{
float a[2]={0},m=0; int i=0,b=95,p=-1,l;
char ch_moy[100]="",ch_boucl[150]="",c;
FILE* fp;
fp_etudiant=fopen("etudiant.txt","r");
if(fp_etudiant!=NULL)
{
rewind(fp_etudiant);
c=fgetc(fp_etudiant);
while(c!=EOF)
{
p++;
l=p;
i=0;
fgets(ch_moy,51,fp_etudiant);
printf("%s\n",ch_moy);
while(c!=EOF&&i<32)
{
c=fgetc(fp_etudiant);
i++;
}
fscanf(fp_etudiant,"%f",&a[0]);
printf("%f",a[0]);
rewind(fp_etudiant);
c=fgetc(fp_etudiant);
while(l>0&&fgets(ch_boucl,150,fp_etudiant)!=NULL)
{
l--;
}
i=0;
while(c!=EOF&&i<93)
{
c=fgetc(fp_etudiant);
i++;
}
fscanf(fp_etudiant,"%f",&a[1]);
printf(" %f",a[1]);
printf("\n");
m=(a[0]*3+a[1]*7)/10;
fp=fopen("moyenne_etudiant.txt","a");
if(fp!=NULL)
{
fputs(ch_moy,fp);
fprintf(fp,"%f",m);
fputc('\n',fp);
fclose(fp);
}
while(c!=EOF&&c!='\n')
{
c=fgetc(fp_etudiant);
}
}
fclose(fp_etudiant);
}
}
void modifier_note(FILE* fp)
{
int i=0,b;
float n;
char chaine[150]="", rnom[10]="",cpnom[10]="",c;
int l=0,m;
printf("saisir le nom a chercher : ");
scanf("%s",rnom);
fp=fopen("etudiant.txt","r+");
if(fp!=NULL)
{
rewind(fp);
c=fgetc(fp);
while(fgets(chaine,150,fp)!=NULL)
{
l++;
sscanf(chaine,"%8s %20s",cpnom,cpnom);
if(!strcmp(cpnom,rnom))
{
m=l-1;
i++;
printf("%s",chaine);
}
}
rewind(fp);
c=fgetc(fp);
if(i==1)
{
while(fgets(chaine,150,fp)!=NULL&&m>0)
{
m--;
}
}
if(i>1)
{
recherche_par_cin(fp);
}
printf("saisir la note a modifier : ");
printf("1.ds 2.exam : ");
scanf("%d",&b);
printf("saisir la nouvelle note : ");
scanf("%f",&n);
switch(b)
{
case 1 : fseek(fp,-23,SEEK_CUR); fprintf(fp,"%f",n); break;
case 2 : fseek(fp,-12,SEEK_CUR); fprintf(fp,"%f",n); break;
default: printf("choix invalide\n"); break;
}
fclose(fp);
}
}
void recherche_par_cin(FILE* fp)
{
char chaine[150]="", rcin[8]="",cpcin[8]="",c;
int i=0,m,l=0;
printf("saisir le num de cin a chercher : ");
scanf("%s",rcin);
fp=fopen("etudiant.txt","r");
if(fp!=NULL)
{
rewind(fp);
c=fgetc(fp);
while(fgets(chaine,150,fp)!=NULL)
{
l++;
sscanf(chaine,"%8s",cpcin);
if(!strcmp(cpcin,rcin))
{
m=l-1;
printf("%s",chaine);
}
}
rewind(fp);
c=fgetc(fp);
while(fgets(chaine,150,fp)!=NULL&&m>0)
{
m--;
}
fclose(fp);
}
}
void rattrapage()
{
FILE* fp=NULL;
float a;
char ch[100]="",c;
fp=fopen("moyenne_etudiant.txt","r");
if (fp!=NULL)
{
printf("La liste des etudiants qui vont passer l'exam de rattrapage : \n\n");
while(fgets(ch,100,fp)!=NULL)
{
fseek(fp,-11,SEEK_CUR);
fscanf(fp,"%f",&a);
if(a<10)
printf("%s",ch);
c=fgetc(fp);
while(c!='\n'&&c!=EOF)
{
c=fgetc(fp);
}
}
fclose(fp);
printf("\n");
}
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void saisir_fichier(FILE* fp_etudiant);
void menu();
int verif_lettre(char* c);
int verif_cin(char *ncin,FILE *fp);
int chiffre(char* c);
void ajouter_etudiant();
FILE* moyenne_etudiant(FILE* fp_etudiant);
void modifier_note(FILE* fp);
void recherche_par_cin(FILE* fp);
void rattrapage();
void main()
{
FILE *fp_etudiant=NULL;
int choix;
do
{
menu();
do
{
scanf("%d",&choix);
if(choix<0||choix>6)
printf("choix invalide\n");
}while(choix<0||choix>6);
switch (choix)
{
case 1 : saisir_fichier(fp_etudiant); break;
case 2 : moyenne_etudiant(fp_etudiant); break;
case 3 : modifier_note(fp_etudiant); break;
case 4 : rattrapage(); break;
case 0 : exit(0);
}
}while(1);
}
void menu()
{
printf("1.saisir les donnees d'un etudiant\n");
printf("2.liste de ratrappage\n");
printf("3.modifier la note d'un etudiant\n");
printf("4.afficher (l'/les)etudiant(s) qui (est/sont) 1er(s) dans la matiere\n");
printf("5.recherche num. d'inscri d'un etudiant\n");
printf("6.trier les etudiant par ordre alphabetique\n");
}
void saisir_fichier(FILE* fp_etudiant)
{
char ch[200]="",ch2[200]="";
char cin[8]="";
char num_inscri[8]="",classe[10]="",matiere[10]="";
float note_control,note_exam;
char prenom[15]="";
char nom[15]="";
int i;
printf("entrer le cin de l'etudiant : ");
do
{
scanf("%s",cin);
}while(strlen(cin)!=8||!chiffre(cin)||!verif_cin(cin,fp_etudiant));
fp_etudiant=fopen("etudiant.txt","r+");
if(fp_etudiant!=NULL)
{
while(fgetc(fp_etudiant)!=EOF);
fputc('\n',fp_etudiant);
fputs(cin,fp_etudiant);
fclose(fp_etudiant);
}
printf("\nentrer le prenom de l'etudiant : ");
do
{
scanf("%s",prenom);
}while(strlen(prenom)>15||strlen(prenom)<1||!verif_lettre(prenom));
printf("\nentrer le nom de l'etudiant : ");
do
{
scanf("%s",nom);
}while(strlen(nom)>15||strlen(nom)<1||!verif_lettre(nom));
printf("\nentrer le num. d'inscri de l'etudiant : ");
do
{
scanf("%s",num_inscri);
}while(strlen(num_inscri)!=8||!chiffre(num_inscri)||!verif_cin(num_inscri,fp_etudiant));
printf("\nentrer la classe de l'etudiant : ");
do
{
scanf("%s",classe);
}while(strlen(classe)<1||strlen(classe)>10);
printf("\nentrer la matiere: ");
do
{
scanf("%s",matiere);
}while(!verif_lettre(matiere)||strlen(matiere)<1||strlen(matiere)>10);
printf("\nentrer le note de controle de l'etudiant : ");
do
{
scanf("%f",¬e_control);
}while(note_control<0||note_control>20);
printf("\nentrer le note de l'exam de l'etudiant : ");
do
{
scanf("%f",¬e_exam);
}while(note_exam<0||note_exam>20);
sprintf(ch," %-20s %-20s %8s %-10s %-10s %-10f %-10f",nom,prenom,num_inscri,classe,matiere,note_control,note_exam);
fp_etudiant=fopen("etudiant.txt","a");
if(fp_etudiant!=NULL)
{
fputs(ch,fp_etudiant);
fclose(fp_etudiant);
}
}
int verif_cin(char *ncin,FILE *fp)
{
char ch[200];
rewind(fp);
while(fgets(ch,199,fp))
{
if(!memcmp(ch,ncin,8))
{
printf("CIN existe deja \n ");
return(0);
}
}
return(1);
}
int verif_lettre(char* c)
{
int i;
for(i=0;i<strlen(c);i++)
{
if((c[i]<='z'&&c[i]>='a')||(c[i]<='Z'&&c[i]>='A'))
return 1;
}
return 0;
}
int chiffre(char* c)
{
int i;
for(i=0;i<strlen(c);i++)
{
if(c[i]<='9'&&c[i]>='0')
return 1;
}
return 0;
}
FILE* moyenne_etudiant(FILE* fp_etudiant)
{
float a[2]={0},m=0; int i=0,b=95,p=-1,l;
char ch_moy[100]="",ch_boucl[150]="",c;
FILE* fp;
fp_etudiant=fopen("etudiant.txt","r");
if(fp_etudiant!=NULL)
{
rewind(fp_etudiant);
c=fgetc(fp_etudiant);
while(c!=EOF)
{
p++;
l=p;
i=0;
fgets(ch_moy,51,fp_etudiant);
printf("%s\n",ch_moy);
while(c!=EOF&&i<32)
{
c=fgetc(fp_etudiant);
i++;
}
fscanf(fp_etudiant,"%f",&a[0]);
printf("%f",a[0]);
rewind(fp_etudiant);
c=fgetc(fp_etudiant);
while(l>0&&fgets(ch_boucl,150,fp_etudiant)!=NULL)
{
l--;
}
i=0;
while(c!=EOF&&i<93)
{
c=fgetc(fp_etudiant);
i++;
}
fscanf(fp_etudiant,"%f",&a[1]);
printf(" %f",a[1]);
printf("\n");
m=(a[0]*3+a[1]*7)/10;
fp=fopen("moyenne_etudiant.txt","a");
if(fp!=NULL)
{
fputs(ch_moy,fp);
fprintf(fp,"%f",m);
fputc('\n',fp);
fclose(fp);
}
while(c!=EOF&&c!='\n')
{
c=fgetc(fp_etudiant);
}
}
fclose(fp_etudiant);
}
}
void modifier_note(FILE* fp)
{
int i=0,b;
float n;
char chaine[150]="", rnom[10]="",cpnom[10]="",c;
int l=0,m;
printf("saisir le nom a chercher : ");
scanf("%s",rnom);
fp=fopen("etudiant.txt","r+");
if(fp!=NULL)
{
rewind(fp);
c=fgetc(fp);
while(fgets(chaine,150,fp)!=NULL)
{
l++;
sscanf(chaine,"%8s %20s",cpnom,cpnom);
if(!strcmp(cpnom,rnom))
{
m=l-1;
i++;
printf("%s",chaine);
}
}
rewind(fp);
c=fgetc(fp);
if(i==1)
{
while(fgets(chaine,150,fp)!=NULL&&m>0)
{
m--;
}
}
if(i>1)
{
recherche_par_cin(fp);
}
printf("saisir la note a modifier : ");
printf("1.ds 2.exam : ");
scanf("%d",&b);
printf("saisir la nouvelle note : ");
scanf("%f",&n);
switch(b)
{
case 1 : fseek(fp,-23,SEEK_CUR); fprintf(fp,"%f",n); break;
case 2 : fseek(fp,-12,SEEK_CUR); fprintf(fp,"%f",n); break;
default: printf("choix invalide\n"); break;
}
fclose(fp);
}
}
void recherche_par_cin(FILE* fp)
{
char chaine[150]="", rcin[8]="",cpcin[8]="",c;
int i=0,m,l=0;
printf("saisir le num de cin a chercher : ");
scanf("%s",rcin);
fp=fopen("etudiant.txt","r");
if(fp!=NULL)
{
rewind(fp);
c=fgetc(fp);
while(fgets(chaine,150,fp)!=NULL)
{
l++;
sscanf(chaine,"%8s",cpcin);
if(!strcmp(cpcin,rcin))
{
m=l-1;
printf("%s",chaine);
}
}
rewind(fp);
c=fgetc(fp);
while(fgets(chaine,150,fp)!=NULL&&m>0)
{
m--;
}
fclose(fp);
}
}
void rattrapage()
{
FILE* fp=NULL;
float a;
char ch[100]="",c;
fp=fopen("moyenne_etudiant.txt","r");
if (fp!=NULL)
{
printf("La liste des etudiants qui vont passer l'exam de rattrapage : \n\n");
while(fgets(ch,100,fp)!=NULL)
{
fseek(fp,-11,SEEK_CUR);
fscanf(fp,"%f",&a);
if(a<10)
printf("%s",ch);
c=fgetc(fp);
while(c!='\n'&&c!=EOF)
{
c=fgetc(fp);
}
}
fclose(fp);
printf("\n");
}
}