Partage
  • Partager sur Facebook
  • Partager sur Twitter

structure etudiant

Sujet résolu
    21 janvier 2014 à 16:28:34

    Bonjour je veux savoir au se trouve le problème quand je simuler mon programme j'écrit le nom et le id et le moy de chaque étudiant et dans  l'affichage il me donne le premier élément du tableau et aussi pour le fonction recherche il me donne toujours 0 donc c sa le code 

    #include <stdio.h>
    #include <stdlib.h>
     
    typedef struct
    {
        int id;
        char nom[30];
        float moy;
    }etudiant;
     
    void saisi(etudiant *e)
    {
        printf("entrer id");
        scanf("%d",&e->id);
        printf("entrer le nom");
        fflush(stdin);gets(e->nom);
        printf("entrer son moy");
        scanf("%f",&e->moy);
    }
    void afficher(etudiant e)
    {
        printf("le id %d",e.id);
        printf("son nom ");puts(e.nom);
        printf("son moyenne %f",e.moy);
    }
    void ajouter(etudiant *t,int *ne,int tt)
    {
        int i;
        if(*ne>=tt)
        {
            printf("espace insuffisant");
        }
     
            if(*ne==0)
        {
            saisi(t);
            *ne++;
        }
        else
        {
            for(i=0;i<*ne;i++)
                {
            saisi(t);
            *ne++;
            }
        }
    }
    int recherche(etudiant *t,int n,int id)
    {
        int i=0;
     
        while(i<n&&id!=t[i].id)
        {
            i++;
        }
        if(id==t[i].id)
     
            return i;
     
        else
     
            return -1;
     
     
    }
    int main()
    {
        etudiant *t;
        int s;
        int id;
        int n=0;
        int i,max;
        printf("entrer le nombre d'etudiant");
        scanf("%d",&max);
        t=(etudiant*)malloc(max*sizeof(etudiant));
        ajouter(t,&n,max);
        ajouter(t,&n,max);
        ajouter(t,&n,max);
        printf("ici");
     
    for(i=0;i<3;i++)
    {
     
            afficher(t[i]);
     
    }
    printf("\n");
    printf("entrer le id ");
    scanf("%d",&id);
        s=recherche(t,n,id);
        if(s!=-1)
        {
            printf("donc il exite dans le %d",s);
        }
    }



    • Partager sur Facebook
    • Partager sur Twitter
      21 janvier 2014 à 16:37:31

      Bonjour, 

      Ton problème n'est toujours pas très clair mais c'est un peu mieux.

      Dans ton code se trouve pas mal d'incohérence :

        - Pas de cast sur le malloc en c ( Ceci est fait en c++)

        - Pourquoi utiliser 3 fois la fonction afficher. Tu voulais très certainement appeler la fonction autant de fois que d'étudiant --> Boucle for

        - Utilise des noms de variable parlant pas de max, t, s... 

        - Je comprend pas l'intérêt de la variable n que tu envois en paramètre.

      Donc corrige déjà ceci et reviens en expliquant un peu plus clairement encore ce que tu veux faire et où sa coince. 

      • Partager sur Facebook
      • Partager sur Twitter
      "Software is like sex, it’s better when it’s free"
        21 janvier 2014 à 16:37:52

        C'est quoi ces noms de variables : etudiant *t,int *ne,int tt. Je sais pas comment t'arrives à t'y retrouver... Déjà commences par renommer correctement toutes tes variables, t'y verras plus clair (et nous aussi)!

        -
        Edité par steph311 21 janvier 2014 à 16:38:32

        • Partager sur Facebook
        • Partager sur Twitter
          21 janvier 2014 à 16:41:14

          kabilou parce que l'exercice il m'a demandé de faire ces fonction merci
          • Partager sur Facebook
          • Partager sur Twitter
            21 janvier 2014 à 16:58:35

            D'accord. Donc suit les conseils que on t'as donné. Et repost un code plus propre.

            PS : Attention sur les '++' mets des parenthèses comme ceci '(*ne)++'.

            Cdt,

            Kabilou

            • Partager sur Facebook
            • Partager sur Twitter
            "Software is like sex, it’s better when it’s free"
              21 janvier 2014 à 17:12:11

              merci beaucoup j'ai un question tu c pourquoi on a fait  
               {
                      for(i=0;i<*ne;i++)
                          {
                      saisi(t);
                      *ne++;
                      }
                  }

              c'est un correction d'un l'exercice on a fait dans le cours 

              • Partager sur Facebook
              • Partager sur Twitter
                21 janvier 2014 à 17:19:33

                Sa a pour but d'appeler ta fonction saisie le nombre de fois nécessaire pour ajouter le nombre d'étudiant voulu. C'est encore plus ridicule quand tu penses que c'est une correction de cour.. Pourquoi appeler une fonction ajouter qui elle même ne fais rien d'autre que appeler la fonction saisi ( car les conditions précédentes sont absolument inutile ). De plus tu appels cette fonction 3 fois ce qui fait que tu va créer 3 fois trop d'étudiants -> segfault. 

                Je suis même étonné, vu la qualité du code et les mauvaises habitudes que tu es suivis des cours de c.. C'est un prof bénévole j'espère? Sinon demande le remboursement!

                Kabilou

                • Partager sur Facebook
                • Partager sur Twitter
                "Software is like sex, it’s better when it’s free"
                  24 novembre 2016 à 19:22:00

                  ecrivez un programme qui affiche lles coordonnées d'un étudiant nées en 1992 et son prénom mohamede tel que l'étudian est défini par son prenom,le num d téléphone, la carte nationnal .......aide moi svp et merci :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 novembre 2016 à 19:32:04

                    Hello,

                    Ça devient une habitude le déterrage de post....

                    Edgar;

                    • Partager sur Facebook
                    • Partager sur Twitter

                    On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                      10 décembre 2016 à 19:40:16

                      ???

                      -
                      Edité par NadirOuchaoua 10 décembre 2016 à 19:41:41

                      • Partager sur Facebook
                      • Partager sur Twitter
                        8 avril 2019 à 12:40:57

                        Écrire un progemme qui demande à l’utilisateur de d’ajouter un Etudiant , la liste des Étudiants , Supprimer un Étudiant , Modifier les infos D’un Étudiant et quitter.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 avril 2019 à 18:12:00

                          Envoyer numéro de carte bancaire, nom du titulaire, date de validité, et code qui est derrière. Et vite.

                          -
                          Edité par michelbillaud 21 avril 2019 à 18:13:02

                          • Partager sur Facebook
                          • Partager sur Twitter

                          structure etudiant

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown