السلام عليكم
انا مبتدئ في لغة السي واتمنى ان اتعلم اكثر
انا قمت ببرمجة برنامج يقوم باخد عدد المواد والتلاميذ وملأ النقط ومن بعد اظهار لائحة لما يريد ان يفله ستجدونها في الكود
البرنامج يعمل على ما يبدو ولكن انا اعرف انه ليس الاحسن ومستواه ضعيف لهذا اطلب منكم التوجيه وتجسيني هذا الكود
#include <stdio.h>#include <stdlib.h>#include <windows.h>int matieres,etudiants;void ColoringText(char text[100],int color);void gotoxy(int x,int y);void saisimat(char matirs[matieres][30]);void saisiprenom(char etud[etudiants][30]);void affich_pour_saisi(char matirs[matieres][30],char etud[etudiants][30]);void saisieNotes( float note[etudiants][matieres]);void affich_les_etud(char etud[etudiants][30]);void note_par_mati(char mati[matieres][30],char etud[etudiants][30],float note[etudiants][matieres]);void note_par_etud(char etud[etudiants][30],float note[etudiants][matieres],char matirs[matieres][30],int num);void affichage(char etud[etudiants][30],float note[etudiants][matieres],char matirs[matieres][30]);void affichage_moyen(char etud[etudiants][30],float note[etudiants][matieres],char matirs[matieres][30]);int main(){ int k=1; system("title abdelhak"); int choice,num_etud; gotoxy(20,10); ColoringText("\20Nombre d'etudiants : ",3); gotoxy(20,12); ColoringText("\20Nombre de matiere : ",3); gotoxy(43,10); scanf("%d",&etudiants); gotoxy(43,12); scanf("%d",&matieres); system("cls"); ColoringText("",7); float notes[etudiants][matieres]; char etudiant[etudiants][30],matirs[matieres][30]; printf("\n\t\t\tLes Matieres :\n"); saisimat(matirs); printf("\t\t\tLes Etudiantes :\n"); saisiprenom(etudiant); system("cls"); affich_pour_saisi(matirs,etudiant); saisieNotes(notes); debut : system("cls"); ColoringText("",7); gotoxy(32,5); printf("<--- Menu --->\n\t\t\t\t--------------"); gotoxy(22,8); printf("1 \32 Liste des Etudient ."); gotoxy(22,9); printf("2 \32 Les Notes Par Etudient ."); gotoxy(22,10); printf("3 \32 Les Notes Par Matiere ."); gotoxy(22,11); printf("4 \32 Affichage des Notes Par ordre alphabetique ."); gotoxy(22,12); printf("5 \32 Moyenne General des etudiant par ordre alphabetique ."); gotoxy(22,13); printf("6 \32 Exit."); gotoxy(45,20); printf("Votre Choice : "); scanf("%d",&choice); system("cls"); switch(choice) { case 1 : affich_les_etud(etudiant); getch(); goto debut; case 2 : affich_les_etud(etudiant); printf("\nChoisir un etudient : "); scanf("%d",&num_etud); system("cls"); note_par_etud(etudiant,notes,matirs,num_etud-1); getch(); goto debut; case 3 : note_par_mati(matirs,etudiant,notes); getch(); goto debut; case 4 : affichage(etudiant,notes,matirs); getch(); goto debut; case 5 : affichage_moyen(etudiant,notes,matirs); getch(); goto debut; case 6 : exit(1); default : gotoxy(30,10); ColoringText("Error Choice \001",2); getch(); goto debut; } getch(); return 0;}void gotoxy(int x,int y){ /** ---- permet de déplacez le curseur ------ */ COORD pos={x,y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}void ColoringText(char text[100],int color) /** ---- permet de Coloriage ligne ------ */{ HANDLE window; window=GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(window,color); printf("%s",text);}void saisimat(char matirs[matieres][30]) /** ---- permet de saisir les matieres ------ */{ int i; for(i=0;i< matieres;i++){ fflush(stdin); printf("Matiere[%d] : ",i+1); scanf("%[^\n]s",&matirs); }}void saisiprenom(char etud[etudiants][30]) /** ---- permet de saisir les prenoms ------ */{ int i; for(i=0;i<etudiants;i++){ printf("Etud[%d] : ",i+1); fflush(stdin); scanf("%[^\n]s",&etud); }} /** ----cette procédure permet d'ffiche un tableau de l'edtudiant et les matieres pour saisir les notes ------ */void affich_pour_saisi(char matirs[matieres][30],char etud[etudiants][30]) { int i,x=22; for(i=0;i<matieres;i++){ gotoxy(x,1); printf("%s || ",matirs); x=x+12; } x=3; for(i=0;i<etudiants;i++){ gotoxy(1,x); printf("%s",etud); x+=2; }}/** ----cette procédure permet de saisir les notes comme tableau ------ */void saisieNotes( float note[etudiants][matieres]){ int i, j,x=22,y=3; for(i=0; i < etudiants; ++i){ for(j=0; j < matieres; ++j){ gotoxy(x,y); fflush(stdin); scanf("%f", ¬e[j]); x+=12; }x=22; y+=2; } }void affich_les_etud(char etud[etudiants][30]){ int i; ColoringText("\t\t\tListe des Etudiant :\n\t\t\t--------------------\n\n\n",2); ColoringText("",7); for(i=0;i<etudiants;i++){ printf("%d \32 %s \n",i+1,etud); }}void note_par_etud(char etud[etudiants][30],float note[etudiants][matieres],char matirs[matieres][30],int num){ int i,x=2; printf("\t\t\t\tLes notes de %s \n\t\t\t\t--------------------\n",etud[num]); for(i=0;i<matieres;i++){ gotoxy(x,3); printf("%s || ",matirs); x=x+12; } x=1; for(i=0;i<matieres;i++){ gotoxy(x,5); printf("%10.2f",note[num]); x=x+12; }}void note_par_mati(char mati[matieres][30],char etud[etudiants][30],float note[etudiants][matieres]){ int i,choi; printf("\t\t\t\tLa Liste des Matiers :\n\t\t\t\t-----------------------\n\n"); for(i=0;i<matieres;i++){ printf("\t\t\t%d : \20 %s \n",i+1,mati); } printf("\n\n\t\t\t\t\t Votre Choice : "); scanf("%d",&choi); system("cls"); printf("\n\t\t\tLes notes de %s",mati[choi-1]); for(i=0;i<etudiants;i++){ printf("\n\t\t %s : %10.00f",etud,note[choi-1]); }}void affichage(char etud[etudiants][30],float note[etudiants][matieres],char matirs[matieres][30]){ int i,j,k,v,x=22,y=3; char chaine[30]; for(i=0;i<etudiants-1;i++){ for(j=i;j<etudiants;j++){ if( strcmp(etud,etud[j]) > 0 ){ strcpy(chaine,etud); strcpy(etud,etud[j]); strcpy(etud[j],chaine); for(k=0;k<matieres;k++){ v=note[k]; note[k]=note[j][k]; note[j][k]=v; }}}} affich_pour_saisi(matirs,etud); for(i=0; i < etudiants; ++i){ for(j=0; j < matieres; ++j){ gotoxy(x,y); printf("%10.2f",note[j]); x+=12; }x=22; y+=2; }}void affichage_moyen(char etud[etudiants][30],float note[etudiants][matieres],char matirs[matieres][30]){ int i,j,v,k; char chaine[30]; float moyen[etudiants],s=0; for(i=0;i<etudiants-1;i++){ for(j=i;j<etudiants;j++){ if( strcmp(etud,etud[j]) > 0 ){ strcpy(chaine,etud); strcpy(etud,etud[j]); strcpy(etud[j],chaine); for(k=0;k<matieres;k++){ v=note[k]; note[k]=note[j][k]; note[j][k]=v; }}}} for(i=0;i<etudiants;i++){ for(j=0;j<matieres;j++){ s=s+note[j]; } moyen=s/matieres; s=0; } printf("l'étudiant\t Le moyenne\n----------\t ---------"); for(i=0;i<etudiants;i++){ gotoxy(0,i+2); printf("%s",etud); gotoxy(21,i+2); printf("%10.2f",moyen); }}وشكرا لكم