Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] Aquisition de valeur pour mes variables

    20 avril 2006 à 22:26:17

    Dans le cadre de classe de 1ère STG Gestion nous étudions les structures algorithmiques.
    Aujourd'hui nous avons vu la structure pour créer un programme de calcul de dû
    avec nom prénom et age d'un "plongeur".
    Voici le commencement de mon projet :

    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
        char NomPlongeur;
        char PrenomPlongeur;
        long AgePlongeur;
      long CalculMt(NbPl)
      {
           const long TARIF = 25;
           long Mt;
           if(NbPl >= 10)
                   {
                         Mt = (TARIF-3)*NbPl;
                   }
           else
                   {
                         Mt = TARIF*NbPl;
                   }
      }
      printf("Bienvenue dans le programme Archimède !\n");
      printf("Ce programme calcul le montant dû par un plongeur en fonction du nombre de ses plongées.\n");
      printf("Saisir le nom du plongeur :");
      scanf("%c", &NomPlongeur);
      printf("Saisir le prénom du plongeur :");
      scanf("%c", &PrenomPlongeur);
      printf("Saisir l'age du plongeur :");
      scanf("%ld", &AgePlongeur);
      system("PAUSE");     
      return 0;
    }


    Et je commence déjà à rencontrer des problèmes :( lors de l'aquisition du Nom du plongeur, et bien le programme execute les deux autre demande de saisie ... sans me laisser saisir.
    Voici des screens :


    Ou alors il me faut faire des pauses à chaques instruction o_O ?
    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2006 à 22:32:43

      %c demande un caractère, %s une chaine, ce dont tu as besoin ici.
      Par contre évite d'utiliser scanf, préfère plutot fgets : tu auras les espaces et moins de problèmes (si tu entres une lettre à la place d'un nombre par exemple pas de plantage).
      Mais si dans ton cours il le demande pas, complique pas les choses :D
      • Partager sur Facebook
      • Partager sur Twitter
        20 avril 2006 à 22:34:42

        Bah limite dans mon cours c'est que la logique,
        on vera les programmes qu'en terminal :D

        donc fgets ?
        cool merci :) avec fgets et %s ^^
        merci bien.
        • Partager sur Facebook
        • Partager sur Twitter
          21 avril 2006 à 7:06:37

          scanf("%s", &tavariable) ou fgets (pas besoin de &s pour ca).
          • Partager sur Facebook
          • Partager sur Twitter
            21 avril 2006 à 16:52:15

            Citation : Pierrera

            donc fgets ? avec fgets et %s


            http://mapage.noos.fr/emdel/notes.htm#saisie
            http://mapage.noos.fr/emdel/notes.htm#fichiers

            Pose des questions si tu ne comprends pas.
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              22 avril 2006 à 12:30:48

              Mais je veus pas mêtre dans un fichier :( .
              Maintenant c'est l'utilisation de mes variables dans une phrase de conclusion qui me pète les couilles :(:

              #include <stdio.h>
              #include <stdlib.h>

              int main(int argc, char *argv[])
              {
                  char NomPlongeur;
                  char PrenomPlongeur;
                  long AgePlongeur;
                  long NombrePlongees;
                  long MontantPlongees;
                  long CalculMt()
                  {
                      const long TARIF = 25;
                      long MontantPlongees;
                      if(NombrePlongees >= 10)
                              {
                                    MontantPlongees = (TARIF-3) * NombrePlongees;
                              }
                      else
                              {
                                    MontantPlongees = TARIF * NombrePlongees;
                              }
                      return MontantPlongees;
                  }
                  printf("Bienvenue dans le programme Archimède !\n");
                  printf("Ce programme calcul le montant dû par un plongeur en fonction du nombre de ses plongées.\n");
                  printf("Saisir le nom du plongeur :");
                  scanf("%s", &NomPlongeur);
                  printf("Saisir le prénom du plongeur :");
                  scanf("%s", &PrenomPlongeur);
                  printf("Saisir l'age du plongeur :");
                  scanf("%ld", &AgePlongeur);
                  printf("Saisir le nombre de plongées éffectuées :");
                  scanf("%ld", &NombrePlongees);
                  MontantPlongees = CalculMt(NombrePlongees);
                  printf("Le client %s %s,\n ayant effectue %ld plongées,\n doit %ld €", NomPlongeur, PrenomPlongeur, NombrePlongees, MontantPlongees);
                  system("PAUSE");   
                  return 0;
              }

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                22 avril 2006 à 13:36:06

                Hem. Pour saisir du texte, faut utiliser des chaines, donc char Nom[50], des trucs comme ça.
                Pour scanf avec %s, pas de & avant le nom de la variable
                On met pas de fonctions dans le main...
                • Partager sur Facebook
                • Partager sur Twitter
                  22 avril 2006 à 13:51:03

                  Citation : Pierrera

                  Mais je veus pas mêtre dans un fichier :( .


                  stdin est un flux comme un autre...

                  Citation : Pierrera


                  Maintenant c'est l'utilisation de mes variables dans une phrase de conclusion qui me pète les couilles :(:


                  Au lieu de jurer comme un malpropre, tu ferais mieux d'écouter les conseils déjà donnés...

                  #include <stdio.h>
                  #include <stdlib.h>

                  /* -ed- pas de definition de fonction dans une fonction.
                  C'est une extension de gcc non portable.

                  Si une fonction n'a pas de parametres, on le precise avec void.
                  Mais la, au contreire, il manque un parametre...
                  */

                  static long CalculMt(long NombrePlongees)
                  {
                     const long TARIF = 25;
                     long MontantPlongees;
                     if (NombrePlongees >= 10)
                     {
                        MontantPlongees = (TARIF - 3) * NombrePlongees;
                     }
                     else
                     {
                        MontantPlongees = TARIF * NombrePlongees;
                     }
                     return MontantPlongees;
                  }

                  int main(int argc, char *argv[])
                  {
                     /* -ed- pour une chaine, il faut de la place. */
                     char NomPlongeur[32];
                     char PrenomPlongeur[32];
                     long AgePlongeur;
                     long NombrePlongees;
                     long MontantPlongees;

                     /* -ed- Attention, les caracteres accentues ne sont pas portables. */
                     printf("Bienvenue dans le programme Archimède !\n");

                     printf("Ce programme calcul le montant dû par un plongeur en fonction du nombre de ses plongées.\n");
                     printf("Saisir le nom du plongeur : ");
                     fflush (stdout);
                     /* -ed- & en trop. Je deconseille scanf().
                     Trop complexe. Une solution baséee sur fgets() est preferable */

                     scanf("%s", NomPlongeur);
                     printf("Saisir le prénom du plongeur : ");
                     scanf("%s", PrenomPlongeur);
                     printf("Saisir l'age du plongeur :" );
                     scanf("%ld", &AgePlongeur);
                     printf("Saisir le nombre de plongées éffectuées :" );
                     scanf("%ld", &NombrePlongees);
                     MontantPlongees = CalculMt(NombrePlongees);
                     /* -ed- eviter les lignes trop longues. Manque un '\n' */
                     printf("Le client %s %s,\n"
                            " ayant effectue %ld plongées,\n"
                            " doit %ld €\n"
                            , NomPlongeur
                            , PrenomPlongeur
                            , NombrePlongees
                            , MontantPlongees);

                     /* -ed- uniquement avec Dev-C++...
                        system("PAUSE");
                     */


                     return 0;
                  }


                  Bienvenue dans le programme ArchimÞde !
                  Ce programme calcul le montant d¹ par un plongeur en fonction du nombre de ses plongÚes.
                  Saisir le nom du plongeur : abcd
                  Saisir le prÚnom du plongeur : efghi
                  Saisir l'age du plongeur :123
                  Saisir le nombre de plongÚes ÚffectuÚes :12
                  Le client abcd efghi,
                  ayant effectue 12 plongÚes,
                  doit 264 Ç
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Music only !

                  [C] Aquisition de valeur pour mes variables

                  × 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