Se connecter / S'enregistrer
Votre question

un exercice en C urgent

Dernière réponse : dans Programmation
2 Mai 2013 22:22:11

bonsoir si quelqun peut m'aider j'ai un exercice de programmation en language C et merci d'avance :
exercice:

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


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. void saisir_fichier(FILE* fp_etudiant);
  6. void menu();
  7. int verif_lettre(char* c);
  8. int verif_cin(char *ncin,FILE *fp);
  9. int chiffre(char* c);
  10. void ajouter_etudiant();
  11. FILE* moyenne_etudiant(FILE* fp_etudiant);
  12. void modifier_note(FILE* fp);
  13. void recherche_par_cin(FILE* fp);
  14. void rattrapage();
  15.  
  16. void main()
  17. {
  18. FILE *fp_etudiant=NULL;
  19. int choix;
  20. do
  21. {
  22. menu();
  23. do
  24. {
  25. scanf("%d",&choix);
  26. if(choix<0||choix>6)
  27. printf("choix invalide\n");
  28. }while(choix<0||choix>6);
  29. switch (choix)
  30. {
  31. case 1 : saisir_fichier(fp_etudiant); break;
  32. case 2 : moyenne_etudiant(fp_etudiant); break;
  33. case 3 : modifier_note(fp_etudiant); break;
  34. case 4 : rattrapage(); break;
  35. case 0 : exit(0);
  36.  
  37. }
  38.  
  39.  
  40. }while(1);
  41.  
  42.  
  43.  
  44.  
  45.  
  46. }
  47.  
  48. void menu()
  49. {
  50. printf("1.saisir les donnees d'un etudiant\n");
  51. printf("2.liste de ratrappage\n");
  52. printf("3.modifier la note d'un etudiant\n");
  53. printf("4.afficher (l'/les)etudiant(s) qui (est/sont) 1er(s) dans la matiere\n");
  54. printf("5.recherche num. d'inscri d'un etudiant\n");
  55. printf("6.trier les etudiant par ordre alphabetique\n");
  56. }
  57.  
  58. void saisir_fichier(FILE* fp_etudiant)
  59. {
  60. char ch[200]="",ch2[200]="";
  61. char cin[8]="";
  62. char num_inscri[8]="",classe[10]="",matiere[10]="";
  63. float note_control,note_exam;
  64. char prenom[15]="";
  65. char nom[15]="";
  66. int i;
  67. printf("entrer le cin de l'etudiant : ");
  68. do
  69. {
  70. scanf("%s",cin);
  71. }while(strlen(cin)!=8||!chiffre(cin)||!verif_cin(cin,fp_etudiant));
  72. fp_etudiant=fopen("etudiant.txt","r+");
  73. if(fp_etudiant!=NULL)
  74. {
  75.  
  76. while(fgetc(fp_etudiant)!=EOF);
  77. fputc('\n',fp_etudiant);
  78. fputs(cin,fp_etudiant);
  79. fclose(fp_etudiant);
  80. }
  81.  
  82. printf("\nentrer le prenom de l'etudiant : ");
  83. do
  84. {
  85. scanf("%s",prenom);
  86.  
  87. }while(strlen(prenom)>15||strlen(prenom)<1||!verif_lettre(prenom));
  88.  
  89. printf("\nentrer le nom de l'etudiant : ");
  90. do
  91. {
  92. scanf("%s",nom);
  93. }while(strlen(nom)>15||strlen(nom)<1||!verif_lettre(nom));
  94.  
  95. printf("\nentrer le num. d'inscri de l'etudiant : ");
  96. do
  97. {
  98. scanf("%s",num_inscri);
  99. }while(strlen(num_inscri)!=8||!chiffre(num_inscri)||!verif_cin(num_inscri,fp_etudiant));
  100. printf("\nentrer la classe de l'etudiant : ");
  101. do
  102. {
  103. scanf("%s",classe);
  104. }while(strlen(classe)<1||strlen(classe)>10);
  105. printf("\nentrer la matiere: ");
  106. do
  107. {
  108. scanf("%s",matiere);
  109. }while(!verif_lettre(matiere)||strlen(matiere)<1||strlen(matiere)>10);
  110. printf("\nentrer le note de controle de l'etudiant : ");
  111. do
  112. {
  113. scanf("%f",&note_control);
  114. }while(note_control<0||note_control>20);
  115. printf("\nentrer le note de l'exam de l'etudiant : ");
  116. do
  117. {
  118. scanf("%f",&note_exam);
  119. }while(note_exam<0||note_exam>20);
  120. sprintf(ch," %-20s %-20s %8s %-10s %-10s %-10f %-10f",nom,prenom,num_inscri,classe,matiere,note_control,note_exam);
  121. fp_etudiant=fopen("etudiant.txt","a");
  122. if(fp_etudiant!=NULL)
  123. {
  124. fputs(ch,fp_etudiant);
  125. fclose(fp_etudiant);
  126. }
  127. }
  128.  
  129.  
  130.  
  131. int verif_cin(char *ncin,FILE *fp)
  132. {
  133. char ch[200];
  134. rewind(fp);
  135. while(fgets(ch,199,fp))
  136. {
  137. if(!memcmp(ch,ncin,8))
  138. {
  139. printf("CIN existe deja \n ");
  140. return(0);
  141. }
  142. }
  143. return(1);
  144. }
  145.  
  146.  
  147. int verif_lettre(char* c)
  148. {
  149. int i;
  150. for(i=0;i<strlen(c);i++)
  151. {
  152. if((c[i]<='z'&&c[i]>='a')||(c[i]<='Z'&&c[i]>='A'))
  153. return 1;
  154. }
  155. return 0;
  156. }
  157.  
  158. int chiffre(char* c)
  159. {
  160. int i;
  161. for(i=0;i<strlen(c);i++)
  162. {
  163. if(c[i]<='9'&&c[i]>='0')
  164. return 1;
  165. }
  166. return 0;
  167. }
  168.  
  169.  
  170.  
  171.  
  172. FILE* moyenne_etudiant(FILE* fp_etudiant)
  173. {
  174. float a[2]={0},m=0; int i=0,b=95,p=-1,l;
  175. char ch_moy[100]="",ch_boucl[150]="",c;
  176. FILE* fp;
  177. fp_etudiant=fopen("etudiant.txt","r");
  178. if(fp_etudiant!=NULL)
  179. {
  180. rewind(fp_etudiant);
  181.  
  182.  
  183. c=fgetc(fp_etudiant);
  184.  
  185.  
  186. while(c!=EOF)
  187. {
  188. p++;
  189. l=p;
  190. i=0;
  191.  
  192. fgets(ch_moy,51,fp_etudiant);
  193.  
  194. printf("%s\n",ch_moy);
  195. while(c!=EOF&&i<32)
  196. {
  197. c=fgetc(fp_etudiant);
  198. i++;
  199. }
  200. fscanf(fp_etudiant,"%f",&a[0]);
  201. printf("%f",a[0]);
  202. rewind(fp_etudiant);
  203. c=fgetc(fp_etudiant);
  204. while(l>0&&fgets(ch_boucl,150,fp_etudiant)!=NULL)
  205. {
  206. l--;
  207. }
  208. i=0;
  209.  
  210. while(c!=EOF&&i<93)
  211. {
  212. c=fgetc(fp_etudiant);
  213. i++;
  214. }
  215. fscanf(fp_etudiant,"%f",&a[1]);
  216. printf(" %f",a[1]);
  217. printf("\n");
  218.  
  219. m=(a[0]*3+a[1]*7)/10;
  220. fp=fopen("moyenne_etudiant.txt","a");
  221. if(fp!=NULL)
  222. {
  223. fputs(ch_moy,fp);
  224. fprintf(fp,"%f",m);
  225. fputc('\n',fp);
  226. fclose(fp);
  227. }
  228. while(c!=EOF&&c!='\n')
  229. {
  230. c=fgetc(fp_etudiant);
  231. }
  232.  
  233.  
  234. }
  235.  
  236. fclose(fp_etudiant);
  237. }
  238.  
  239. }
  240.  
  241.  
  242.  
  243. void modifier_note(FILE* fp)
  244. {
  245. int i=0,b;
  246. float n;
  247. char chaine[150]="", rnom[10]="",cpnom[10]="",c;
  248. int l=0,m;
  249.  
  250. printf("saisir le nom a chercher : ");
  251. scanf("%s",rnom);
  252. fp=fopen("etudiant.txt","r+");
  253. if(fp!=NULL)
  254. {
  255. rewind(fp);
  256. c=fgetc(fp);
  257. while(fgets(chaine,150,fp)!=NULL)
  258. {
  259. l++;
  260.  
  261. sscanf(chaine,"%8s %20s",cpnom,cpnom);
  262. if(!strcmp(cpnom,rnom))
  263. {
  264. m=l-1;
  265. i++;
  266. printf("%s",chaine);
  267. }
  268.  
  269. }
  270. rewind(fp);
  271. c=fgetc(fp);
  272. if(i==1)
  273. {
  274. while(fgets(chaine,150,fp)!=NULL&&m>0)
  275. {
  276. m--;
  277. }
  278. }
  279. if(i>1)
  280. {
  281. recherche_par_cin(fp);
  282. }
  283. printf("saisir la note a modifier : ");
  284. printf("1.ds 2.exam : ");
  285. scanf("%d",&b);
  286. printf("saisir la nouvelle note : ");
  287. scanf("%f",&n);
  288. switch(b)
  289. {
  290. case 1 : fseek(fp,-23,SEEK_CUR); fprintf(fp,"%f",n); break;
  291. case 2 : fseek(fp,-12,SEEK_CUR); fprintf(fp,"%f",n); break;
  292. default: printf("choix invalide\n"); break;
  293. }
  294. fclose(fp);
  295.  
  296. }
  297.  
  298. }
  299.  
  300.  
  301. void recherche_par_cin(FILE* fp)
  302. {
  303. char chaine[150]="", rcin[8]="",cpcin[8]="",c;
  304. int i=0,m,l=0;
  305.  
  306. printf("saisir le num de cin a chercher : ");
  307. scanf("%s",rcin);
  308. fp=fopen("etudiant.txt","r");
  309. if(fp!=NULL)
  310. {
  311. rewind(fp);
  312. c=fgetc(fp);
  313. while(fgets(chaine,150,fp)!=NULL)
  314. {
  315. l++;
  316. sscanf(chaine,"%8s",cpcin);
  317. if(!strcmp(cpcin,rcin))
  318. {
  319. m=l-1;
  320. printf("%s",chaine);
  321. }
  322.  
  323. }
  324. rewind(fp);
  325. c=fgetc(fp);
  326.  
  327.  
  328. while(fgets(chaine,150,fp)!=NULL&&m>0)
  329. {
  330. m--;
  331. }
  332. fclose(fp);
  333. }
  334. }
  335.  
  336.  
  337. void rattrapage()
  338. {
  339. FILE* fp=NULL;
  340. float a;
  341. char ch[100]="",c;
  342. fp=fopen("moyenne_etudiant.txt","r");
  343. if (fp!=NULL)
  344. {
  345. printf("La liste des etudiants qui vont passer l'exam de rattrapage : \n\n");
  346. while(fgets(ch,100,fp)!=NULL)
  347. {
  348. fseek(fp,-11,SEEK_CUR);
  349. fscanf(fp,"%f",&a);
  350. if(a<10)
  351. printf("%s",ch);
  352. c=fgetc(fp);
  353. while(c!='\n'&&c!=EOF)
  354. {
  355. c=fgetc(fp);
  356. }
  357. }
  358. fclose(fp);
  359. printf("\n");
  360.  
  361. }
  362. }

Autres pages sur : exercice urgent

3 Mai 2013 00:08:09

OMG , je transforme en post forum et tous le code apparait ... O_o
Le nouveau design me fais peur !!!
Contenus similaires
3 Mai 2013 00:36:31

et t'es bloqué où ?
3 Mai 2013 00:41:15

dés le début !! c'est pour 2m1 et chui trés perturbé
3 Mai 2013 00:49:16

et t'as cru qu'on allait tout te faire ce soir ?
3 Mai 2013 01:03:35

#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_etu
3 Mai 2013 01:04:06

moi j ai fais ça mais il ne compile pas!!
3 Mai 2013 01:21:35

il faut mettre ça dans le message directement, pas dans les commentaires, pas de place dans les commentaires
3 Mai 2013 01:49:57

j'ai modifié le message maintenant l'énoncé et ma solution!! qu'est ce que je fais maintenant
14 Mai 2013 23:07:17

Il n'y a pas de question, donc pas d'aide à apporter, pourquoi t'embêter à faire une remise en forme ? :) 
15 Mai 2013 18:48:31

Car les personne qui utilise le forum on seulement 2 de neurone ... et n'arrive pas a faire la différence entre "commentaire" et "réponse" !
Mais bon la on change de sujet !
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS