Il y a actuellement 95 visiteurs
Vendredi 30 Juillet 2021
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

un exercice langage C urgent

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

un exercice langage C urgent

Message le 02 Mai 2013 21:03

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
khal22
Visiteur
Visiteur
 
Messages: 3
Inscription: 02 Mai 2013 20:57
 


Re: un exercice langage C urgent

Message le 02 Mai 2013 21:54

Bonsoir
Il n'est pas dans l'habitude du forum de faire les devoirs des étudiants.
par contre on peut éventuellement aider à trouver une ou plusieurs erreurs dans un processus

car fournir une solution toute faite n'est que rarement formateur...et je sais de quoi je parle vu le nombre très important d'années d'enseignement que j'ai derrière moi :wink:
La sagesse est une montagne dont la base est confondue avec le sommet
...Celui qui a été lumière jamais ne disparait.. il reste lumière, sentinelle dans l'éternité, son aura bienveillante nous montre le chemin.
Avatar de l'utilisateur
EinsteinZero
Moderateur
Moderateur
 
Messages: 17276
Inscription: 27 Déc 2009 16:22
Localisation: Normandie
 

Re: un exercice langage C urgent

Message le 02 Mai 2013 22:07

Code: Tout sélectionner
#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",&note_control);
       }while(note_control<0||note_control>20);
       printf("\nentrer le note de l'exam de l'etudiant : ");
       do
       {
           scanf("%f",&note_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");

    }
}



j'ai fais ça mais il ya trop de faute
khal22
Visiteur
Visiteur
 
Messages: 3
Inscription: 02 Mai 2013 20:57
 

Re: un exercice langage C urgent

Message le 02 Mai 2013 22:27

C'est déjà mieux :wink:
j'ai ajouté des balises [code] pour rendre plus lisible, pour une éventuelle bonne âme qui voudra regarder
La sagesse est une montagne dont la base est confondue avec le sommet
...Celui qui a été lumière jamais ne disparait.. il reste lumière, sentinelle dans l'éternité, son aura bienveillante nous montre le chemin.
Avatar de l'utilisateur
EinsteinZero
Moderateur
Moderateur
 
Messages: 17276
Inscription: 27 Déc 2009 16:22
Localisation: Normandie
 

Re: un exercice langage C urgent

Message le 02 Mai 2013 22:51

tu vas m'aider??
khal22
Visiteur
Visiteur
 
Messages: 3
Inscription: 02 Mai 2013 20:57
 

Re: un exercice langage C urgent

Message le 03 Mai 2013 06:25

Bonjour
personnellement, je ne suis pas un spécialiste du C et, de toute façon je n'ai pas le temps ses temps-ci trop de travail pro à faire
La sagesse est une montagne dont la base est confondue avec le sommet
...Celui qui a été lumière jamais ne disparait.. il reste lumière, sentinelle dans l'éternité, son aura bienveillante nous montre le chemin.
Avatar de l'utilisateur
EinsteinZero
Moderateur
Moderateur
 
Messages: 17276
Inscription: 27 Déc 2009 16:22
Localisation: Normandie
 



Sujets similaires

Message (urgent svp) comment utiliser virtualbox avec un vpn
Bonjour à tous, j'ai vraiment besoin d'aide, cela fait plus de deux jours que j'essaie de faire quelque chose mais je n'y arrive pas.Je viens de finir d'installer la distro FreePBX sur une machine virtuelle (oracle virtualbox) et ça marche mais le problème c'est que je veux utiliser un vpn (nordvpn) ...
Réponses: 10

Message Urgent: Sécurité réseau wifi
Bj,Svp,quand le reset est fait sur le modem en ce qui conçerne l'utilisation wifi ( ça été fait en pressant un bouton reset dans le modem ); une fois redu à l'opérateur pour résilier le  contrat, l'opérateur peut restsurer ou récupérer les informations personelles d'une façon ou d'une autre ?Merci p ...
Réponses: 0

Message Urgent : Sécurité 3G
Bj,Svp, pour sécuriser le réseau 3G,quel  vpn ajouter et en ce qui conçerne le nom, le serveur , noms de recherches etc... à définir?Merci ,
Réponses: 0

Message Urgent svp!! windows ne demarre pas après changement ssd
Bonjour à tous,J'ai cloné mon HDD vers mon nouveau SSD hier. Cependant, mon pc ne redemarre pas correctement. J'ai remarqué dans le bios que mon pc était en mode RST et mon SSD en mode AHCI. Pourriez-vous m'aider svp.Cordialement
Réponses: 1

Message URGENT SVP Comparaison pc core i3 500Go HDD et AMD A9 256 GO
BonjourC'est vraiment urgent s il vous plait J'ai besoin de votre aide pour comparer deux pc: le premier est un hp intel core i3 7020 U avec 500 GO HDD et le second est un hp AMD A9 9425.le A9: https://www.darty.com/nav/achat/informa ... 56_r5.htmlle core i3: https://www.darty.com/nav/achat/informa ...
Réponses: 1

Message Besoins d'avis urgent !
Voici ma config qu'en pensez vous ?https://www.topachat.com/pages/configom ... JNYF2o0%3DMerci !
Réponses: 2

Message URGENT...Que pensez vous de ce modele de Pc portable ?
Bonjour,Je peux avoir ce portable en neuf jamais ouvert et garantie pour 800 eu. En vaut il le coup ?https://www.cdiscount.com/informatique/ ... mpos=16|cdmerci d'avance
Réponses: 10


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


.: Nous contacter :: Flux RSS :: Données personnelles :.
cron