Partage
  • Partager sur Facebook
  • Partager sur Twitter

gestion des étudiants en C

tableau de structures

    17 juillet 2021 à 15:58:47

    Bonjour la communauté,

    besoin de l'aide,

    Une fonction permettant de saisir la liste des étudiants a partir du clavier. 

    On doit definir une structure etudiant ou un etudiant est representé par son nom, son prenom et une note.

    Merci 

    -
    Edité par IssoufForgo1 17 juillet 2021 à 16:02:30

    • Partager sur Facebook
    • Partager sur Twitter
      17 juillet 2021 à 16:26:09

      Bonjour,

      Manque de précisions

      Vous êtes ici sur un forum d'entraide communautaire et non pas sur un forum de demande de service, le but n'est donc pas de fournir une réponse toute faite ou de directement fournir la solution à quiconque viendrait sans la moindre trace. Afin d'obtenir de l'aide et une solution à votre problème, il est fortement recommandé de présenter clairement l'état actuel du problème en nous fournissant :

      • Un descriptif clair et précis du problème
      • La tentative actuelle de résolution que vous avez effectué => Le code que vous avez écrit, inséré sur le forum à l'aide du bouton code </>.
      • Le résultat attendu et le résultat actuel
      • Toutes pistes de recherches pouvant aider à la résolution

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        17 juillet 2021 à 19:07:38

        IssoufForgo1 a écrit:

        Une fonction permettant de saisir la liste des étudiants a partir du clavier. 

        scanf ou fgets 

        • Partager sur Facebook
        • Partager sur Twitter
          17 juillet 2021 à 19:20:16

          Il faudrait également regarder les structures et les pointeurs.

          • Partager sur Facebook
          • Partager sur Twitter

          Le Tout est souvent plus grand que la somme de ses parties.

            17 juillet 2021 à 19:50:11

            Et avant tout, il faut trouver quelle est la structure à employer (= la déclarer)

            -
            Edité par edgarjacobs 17 juillet 2021 à 19:50:53

            • Partager sur Facebook
            • Partager sur Twitter

            Il y a ceux qui font des sauvegardes, et ceux qui n'ont pas encore eu d'incident....

              17 juillet 2021 à 22:05:23

              Zero.c a écrit:

              IssoufForgo1 a écrit:

              Une fonction permettant de saisir la liste des étudiants a partir du clavier. 

              scanf ou fgets 

              La porte grande ouverte à tous les problèmes de débordement de buffer, ça se fait encore en 2021 ?

              Mieux vaut getline() à la place.

              -
              Edité par michelbillaud 17 juillet 2021 à 22:07:03

              • Partager sur Facebook
              • Partager sur Twitter
                17 juillet 2021 à 22:52:33

                michelbillaud a écrit:

                Mieux vaut getline() à la place.

                Certes, mais getline n'est pas standard et je suppose que le PO débute ! 

                En quoi getline est mieux que fgets pour les débordements de buffer ?

                • Partager sur Facebook
                • Partager sur Twitter
                  17 juillet 2021 à 23:22:26

                  getline

                  • lit toute la ligne
                  • la place dans un tampon qui est agrandi au besoin.
                  fgets ne déborde pas, mais nous laisse éventuellement à gérer une fin de ligne non consommée, ce qui complique beaucoup la programmation (quand le but est de traiter une ligne)
                  ---
                  Et getline fait partie du standard Posix (2008), ainsi que des extensions de la bibliothèque C
                  C Library Part II: Dynamic Allocation Functions, ISO/IEC TR 24731-2:2010,
                  Bref, quand on l'a, il faut s'en servir.

                  -
                  Edité par michelbillaud 17 juillet 2021 à 23:32:44

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 juillet 2021 à 23:38:46

                    Je connais getline, c'est juste que je trouve que ce n'est pas approprié à un débutant de chez débutant.

                    Comme ce n'est pas standard, ce n'est pas forcement fourni avec les bibliothèques qui accompagne les compilateurs. Il va donc falloir que le débutant ailles en chercher une implémentation puis qu'il intègre à son projet, ce qui sera une autre complication pour lui.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 juillet 2021 à 3:41:01

                      rtir du clavier.
                      > On doit definir une structure etudiant ou un etudiant est representé par son nom, son prenom et une note
                      + Comment lit-on une note quand on débute en programmation?
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Le Tout est souvent plus grand que la somme de ses parties.

                        18 juillet 2021 à 7:45:12

                        Quand on est débutant en programmation, on fait ses exercices soi-même.

                        -
                        Edité par michelbillaud 18 juillet 2021 à 7:46:07

                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 juillet 2021 à 11:38:26

                          KevinGL a écrit:

                          getline() c'est en C++

                          Ça existe en C aussi, ce n'est pas standard mais ça fait partie des extensions de la lib C.

                          Tu n'as donc pas lu les réponses apporté au sujet ?

                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 juillet 2021 à 16:02:41

                            C'est beau l'éloge de la portabilité, mais concrètement, sur quel système le débutant ne trouvera pas getline ?

                            Par ailleurs, quand getline n'existe pas, c'est pas compliqué à réécrire.

                            Algo : lire des caractères et les placer dans le buffer jusqu'à la marque de fin de ligne, en réallouant le buffer en plus grand quand il est plein.

                            -
                            Edité par michelbillaud 19 juillet 2021 à 16:05:45

                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 juillet 2021 à 18:50:53

                              michelbillaud a écrit:

                              C'est beau l'éloge de la portabilité, mais concrètement, sur quel système le débutant ne trouvera pas getline ?

                              Windows : MinGW , Visual C .

                              PierrotLeFou a écrit:

                              + Comment lit-on une note quand on débute en programmation?

                              Je suppose que la note est un entier int ? Il va falloir traduire la chaîne en entier.

                              Le nom et le prénom sont des champs de structure, dans ce cas que fait-on ? Si c'est des pointeurs on pourra appeler directement getline, si c'est des tableaux de char il faudra copier la saisie dans les tableaux, sans oublier de désallouer la mémoire.

                              De plus c'est rare de voir dans les cours de C pour débutant l'utilisation de getline. Même le cours de Zeste de Savoir montre la saisie d'une chaîne de caractère avec scanf à moins que ce soit un mauvais cours ?



                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 juillet 2021 à 18:55:47

                                Je posais la question pour la note car les débutants ne savent pas forcément comment décoder une chaîne représentant un entier.
                                On ne montre pas non plus l'utilisation de fflush().
                                Et pour un débutant, c'est quoi le  stdin ?
                                • Partager sur Facebook
                                • Partager sur Twitter

                                Le Tout est souvent plus grand que la somme de ses parties.

                                  19 juillet 2021 à 19:52:42

                                  Zero.c a écrit:

                                  KevinGL a écrit:

                                  getline() c'est en C++

                                  Ça existe en C aussi, ce n'est pas standard mais ça fait partie des extensions de la lib C.

                                  Tu n'as donc pas lu les réponses apporté au sujet ?

                                  Si, mais je me suis quand même permis ...

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 juillet 2021 à 23:11:29

                                    Zero.c a écrit:

                                    De plus c'est rare de voir dans les cours de C pour débutant l'utilisation de getline.

                                    La quasi totalité des cours de C pour débutants leur donnent la mauvaise habitude de négliger totalement les problèmes de sécurité du code. Choisir pour commencer le langage le plus casse-gueule qui soit, et zapper la securité, ça commence fort.

                                    Et si je ne m'abuse, mingw est basé sur gcc, qui a getline parmi ses extensions.

                                    Pour lire à la console des structures avec des champs texte de taille fixe' il faut d'abord lire le texte PUIS le valider (taille, caracteres autorises, suppression des espaces inutiles etc).

                                    On ne le fait pas faire aux débutants, c'est parce que c'est extrêmement pénible à faire correctement en C, qui est complètement déficient de ce côté là. C'est le résultat de l'obstination  stupide à vouloir enseigner la programmation en commençant par C.

                                    -
                                    Edité par michelbillaud 19 juillet 2021 à 23:27:29

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 juillet 2021 à 23:33:45

                                      michelbillaud a écrit:

                                      [...]

                                      On ne le fait pas faire aux débutants, c'est parce que c'est extrêmement pénible à faire correctement en C, qui est complètement déficient de ce côté là. C'est le résultat de l'obstination  stupide à vouloir enseigner la programmation en commençant par C.

                                      -
                                      Edité par michelbillaud il y a 5 minutes


                                      +1
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        20 juillet 2021 à 3:31:24

                                        C'est difficile pour moi de juger ça. J'ai commencé avec Fortran il y a un million d'années ...
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Le Tout est souvent plus grand que la somme de ses parties.

                                          20 juillet 2021 à 7:01:21

                                          A l'époque des dinosaures, les exercices de programmation ne consistaient pas à mener un dialogue interactif avec l'utilisateur.

                                          On traitait essentiellement des données numériques (Et fortran était bien pour ca) avec fin directe du programme si les données prises dans les fichiers étaient verolees.

                                          Quand est venue la possibilité de faire des trucs interactifs (micro ordinateurs)  c'était plus marrant  mais en réalité le dialogue était en général du grand n'importe quoi. Dialogue non specifie, erreurs non detectees.

                                          -
                                          Edité par michelbillaud 20 juillet 2021 à 7:02:33

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            20 juillet 2021 à 7:35:33

                                            Je pense souvent que la plus grande partie d'un programme consiste à vérifier les informations fournies par les humains.
                                            Ha, si c'étaient des intelligences artificielles qqui entraient les données ...
                                            Elles seraient peut-être assez chiantes pour nous embêter.
                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            Le Tout est souvent plus grand que la somme de ses parties.

                                              20 juillet 2021 à 12:11:22

                                              PierrotLeFou a écrit:

                                              Elles seraient peut-être assez chiantes pour nous embêter.

                                              Les humains savent très bien faire ça.

                                              michelbillaud a écrit:

                                              Et si je ne m'abuse, mingw est basé sur gcc, qui a getline parmi ses extensions.

                                              J'ai beau chercher, je ne trouve pas ?

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                20 juillet 2021 à 13:03:48

                                                En effet getline n'est pas standard, n'est pas une extension gcc ; cela concerne la partie libc pas la partie compilo.

                                                Gnu Lib propose un source de remplacement pour les plateformes ne disposant pas de cette ou pour celle qui en propose une déficiente. Bon … gnulib ⇒ autotools … un peu vieillot.

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  5 janvier 2022 à 0:19:27

                                                  IssoufForgo1 a écrit:

                                                  merci à toutes et tous

                                                  Bonjour,

                                                  Sujet résolu

                                                  Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  gestion des étudiants en C

                                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                  • Editeur
                                                  • Markdown