Il y a actuellement 413 visiteurs
Vendredi 29 Mars 2024
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:
Avatar de l'utilisateur
EinsteinZero
Moderateur
Moderateur
 
Messages: 18275
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
Avatar de l'utilisateur
EinsteinZero
Moderateur
Moderateur
 
Messages: 18275
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
Avatar de l'utilisateur
EinsteinZero
Moderateur
Moderateur
 
Messages: 18275
Inscription: 27 Déc 2009 16:22
Localisation: Normandie
 



Sujets similaires

Message Demande de désinfection URGENT SVP !!!
BonjourJe pense avoir été infecté par un RAT (Remote Access Tool) et peut-être même autre chose. J'ai besoin de l'aide d'une ou plusieurs âmes charitables pour nettoyer mon post de ces intrus. J'ai fais des recherches sur Internet et suis tombé sur cette page : https://lesvirus.fr/remote-administra ...
Réponses: 1

Message Initiation au langage J
Dans ce sujet, je propose aux amateurs de curiosités exotiques une aventure dans le monde enchanté du J, un langage aussi méconnu qu'il est atypique. Développé à partir du début des années 90 par Kenneth Iverson et Roger Hui, sa vocation première est de permettre des calculs complexes sur des struct ...
Réponses: 3

Message Problème de baisse de FPS sur Fortnite, besoin d'aide urgent
Bonjour à tous,Je suis nouveau sur ce forum et j'ai besoin de votre aide. J'ai récemment commencé à jouer à Fortnite sur mon PC, mais j'ai des problèmes de performance assez frustrants. Ma configuration PC n'est pas la plus récente, mais je pense qu'elle devrait être suffisante pour faire tourner le ...
Réponses: 1

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


Qui est en ligne

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


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