Programme console C

Bonjour, je m'entraîne depuis hier au site du zéro à faire des programmes, des petits car je veux apprendre le C.
Voici mon code et je vous expliquerais mon problème plus tard.

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

int main(int argc, char *argv[])
{
long age = 0;
printf ("quel age avez vous ? \n\n");
scanf ("%ld", &age);
if (age >=18)
{
printf ("vous etes majeur ! \n\n");
}
else if (age > 10)
{
printf ("vous ete mineur ! il ne te reste plus que 1 an\n\n");
}
else
{
printf (" c est dommage tu es beaucoup trop jeune ! ! ! \n\n");
}

system ("PAUSE");
return 0;
}

Mon problème est que je voudrais que quand par exemple la console s'ouvre :
j'entre le nombre 18 ===> il y a marquer " vous etes majeur"
j'entre le nombre 17 ===> il y a marquer "vous etes mineur ! il ne vous reste plus que 1 an"
j'entre le nombre 16====> il y a marquer"vous etes mineur ! il ne vous reste plus que 1 an"

Voila je voudrais faire en sorte par exemple si je met 16 ans il y a marquer il ne vous reste plus que 2 ans et chaque autre nombre que je taperais ce serait la même chose mais comment ?
--
dsl pour l'URL: http://rohcavamaintenant.free.fr/Jo/Petitions.html
et https://www.facebook.com/group.php?gid=21375831670 soyons avec les animaux
Configuration: Windows Vista
Firefox 3.0.10

43 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

En langage C, le problème est d'afficher, après saisie d'un âge avec scanf, si l'utilisateur est majeur ou mineur et, pour les mineurs, le nombre d'années restantes jusqu'à 18. La solution essentielle consiste à calculer N = 18 - âge et d'afficher 'vous etes majeur' si âge >= 18, sinon 'vous etes mineur ! il ne vous reste plus que N an(s)'. Il faut aussi assurer le bon format de saisie et l'affichage, par exemple en utilisant %i ou %ld et en ajoutant des retours à la ligne avec \n pour que le texte s'affiche correctement. D'autres proposent d'adapter la grammaire (an/ans) et d'envisager une extension facile pour d'autres seuils tout en évitant les messages redondants.

Bobot (l’IA à votre service)
  1. Bonjour, je débute également dans ce langage C.
    Je souhaitais savoir si le code suivant est optimisé ou non car comme vous l'avez dit, mieux vaut prendre de bonnes habitudes dès le début.
    merci de jeter un coup d'oeil et de me dire si ce code est propre ou non ?

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

    int main()

    {

    char age=0, diff=0;
    const char majorite = 18;

    printf("Quel est ton age ? : ");
    scanf("%ld", &age); // entrée clavier âge

    diff = majorite - age;

    if(diff > 0) // Si condition = 1 alors mineur

    {
    printf("tu es mineur, il te reste encore %ld avant d'etre majeur", diff);
    }

    else // si condition = 1 alors majeur

    {
    diff *= -1;
    printf("tu es majeur depuis %ld ans", diff);
    }

    return 0; // fin du programme

    }
    1. Contributeur
      et oui !

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

      long double (long nombreDebut)
      {
      return 2 * nombreDebut; // ce qui est dans les fonctions sont des copies des
      } // variables, donc nombre tout seul est inconnu !

      int main(int argc, char *argv[])
      {
      long nombreEntre = 0, nombreTriple = 0; // et il vaut combien nombreDebut ???
      // il vaudrait mieux prendre un seul nombre de départ
      printf("Entrez un nombre... "); // donc remplacer tous les nombreEntre par nombreDebut
      scanf("%ld", &nombreEntre);

      nombreEntre = double(nombreDebut);
      printf("Le double de ce nombre est %ld\n", nombreTriple); //c'est bien nombreentre qui vaut le triple !
      // nombreTriple vaut 0 pour l'instant !
      system("PAUSE"); // affiche donc nombreEntre !
      return 0;
      }
      1. une autre qustion en faite j'esaie de faire nu programme qui calcule le double d'un nombre mais code blocks me di qu'il y a une erreur a chaque fois voici mon code :

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

        long double (long nombreDebut)
        {
        return 2 * nombre;
        }

        int main(int argc, char *argv[])
        {
        long nombreEntre = 0, nombreTriple = 0;

        printf("Entrez un nombre... ");
        scanf("%ld", &nombreEntre);

        nombreEntre = double(nombreDebut);
        printf("Le double de ce nombre est %ld\n", nombreTriple);

        system("PAUSE");
        return 0;
        }

        1. #include <stdio.h>

          main()
          {
          int age,r;

          printf ("quel age avez vous ? \n");
          scanf ("%d", &age);

          if (age>=18)
          printf ("vous etes majeur");
          }
          else if (age<18)
          {
          r=18-age
          printf ("vous etes mineur !il ne te reste que",r);
          }
          else if (age <10)
          {
          r=10-age;
          printf (" c' est dommage tu es beaucoup trop jeune ! ! il reste plus que ",r);
          }

          }
          1. Contributeur
            Mais ne t'en fait pas si tu ne comprends pas tout ca, tu auras bien le temps de le comprendre plus tard...
            1. merci mais pourquoi on ne met pas de & devant prénom et est ce que prenom est une variable ?
              je ne comprend pas trop
              1. Contributeur
                Le but de l'esperluette (&) est d'obtenir l'adresse d'une variable. Or, dans le cas d'un tableau ou d'un pointeur, nous avons déjà l'adresse. Donc l'esperluette est inutile. De plus, les types ne correspondrait pas : char** au lieu de char*.
                Pour tout ce qui est non tableau et non pointeur, l'esperluette est de mise.
                Cdlt
            2. Contributeur
              ca tu l'apprendras plus tard, mais il faut faire :

              char prenom [100];

              scanf("%100s", prenom);
              printf("Tu t'appelles %s, je le sais !", prenom);

              normalement, c plus compliqué que ca, il faudrait vider le buffer, recuperer les lettres une a une avec fgets, tout ca, mais pour toi ca suffit amplement puisque tu débutes...
              1. Contributeur
                char prenom[100];
                scanf("%100s", prenom);

                Il faut mettre "%99s", sinon pas de place pour le '\0' dans le cas d'une trop longue chaîne.
            3. mais sinon par exemple je met :
              printf ("comment t'appelles tu ?\n");
              scanf ????
              je ne sais pas comment faire pour écrire des prenom ou des nom ?
              1. Contributeur
                eh bien cherche un peu, je te donnerai la reponse si tu ne trouves vraiment pas...
                Tu n'auras pas toujours la reponse a tes problemes !
                1. ok voici mon code :
                  #include <stdio.h>
                  #include <stdlib.h>

                  int main(int argc, char *argv[])
                  {
                  long nombreDeVie = 5;

                  printf ("vous avez %ld de vie\n", nombreDeVie);
                  printf ("attention\n");
                  nombreDeVie --;
                  printf ("ha desole tu viens de perdre %ld de vie\n", nombreDeVie);

                  system ("PAUSE");
                  return 0;
                  }

                  quand la console s'ouvre il y a marqué :
                  1/ vous avez 5 de vie
                  2/ attention
                  3/ ha desole tu viens de perdre 4 de vie

                  alors que mon programme par exemple je veux qu'il fasse AUTOMATIQUEMENT la soustraction de 1 en 1 genre j'ai 15 de vie je me fais touché et un toucher = moins 1 de vie alors je me retrouve à 14 et AINSI de suite...
                  1. Contributeur
                    alors en fait, il faut un point virgule, apres vies--;

                    our tes exemples, += 4 est un raccourci pour ecrire
                    ex ::

                    vie += 4; est equivalent à vie = vie + 4;

                    c plus rapide !
                    1. bon c'est pas grave mais j'ai un autre problème de malcomprehension:
                      par exemple ce code :
                      long nombre = 2;

                      nombre += 4; // nombre vaut 6...
                      nombre -= 3; // ... nombre vaut maintenant 3
                      nombre *= 5; // ... nombre vaut 15
                      nombre /= 3; // ... nombre vaut 5
                      nombre %= 3; // ... nombre vaut 2 (car 5 = 1 * 3 + 2)

                      Je ne comprend pas ces signe += , -= , pouquoi y a t-il un + ou un - devant = ?

                      faites un exemple svp
                      1. donc si je réecris mon programme il faut que j'écrive :
                        #include <stdio.h>
                        #include <stdlib.h>

                        int main(int argc, char *argv)
                        {
                        long nombreDeVie = 5;

                        printf("vous avez %ld de vie\n", nombreDeVie);
                        printf("attention");
                        nombreDeVie --
                        printf("ha desole tu vien de perdre %ld de vie\n", nombreDeVie);
                        system("PAUSE");
                        return 0;
                        }

                        mais il y a marquer qu'il y a une erreur de syntaxe avant printf à la ligne 11 là ou j'ai rajoutter les 2 --.
                        et aussi il me disent je croit de rajouter un char
                        1. Contributeur
                          il faut quelque chose de valable tout le temps... quelque chose qui vaut 1 de moins à chaque fois...
                          il faut que tu ecrives vies --;
                          ca s'appelle la décrémentation
                          il y a aussi l'incrementation, indispensable dans les boucles for !
                          1. et quand hier tu me disais il fallait faire 18 - age ...
                            là aussi alors je peux le faire si je veux faire ça :
                            #include <stdio.h>
                            #include <stdlib.h>

                            int main(int argc, char *argv[])
                            {
                            long nombreDeVies = 5;

                            printf("Vous avez %ld vies\n", nombreDeVies);
                            printf("attention tu as été toucher\n");
                            nombreDeVies = 4;
                            printf("Ah desole, il ne vous reste plus que %ld vies maintenant !\n\n", nombreDeVies);

                            system("PAUSE");
                            return 0;
                            }

                            comment je peux faire pour trouver une autre solution que de plutot ecrire nombreDeVie = 4 je ne pourrais pas faire un truc comme reste (reste étant un autre nom de variable) donc reste - quelque chose ??
                            1. Contributeur
                              Je crois que la il s'agit de rapidité, d'efficacité, de ponctualité... Je m'égare.
                              Non, peu importe, si tu connais la valeur de la variable des sa création, assigne lui tout de suite sa valeur...

                              1. une autre question :
                                pour les histoires de variables :
                                est-ce que c'est pareil de mettre par exemple :
                                #include <stdio.h>
                                #include <stdlib.h>
                                int main(int argc, char *argv[])
                                {
                                long nombreDeVies;
                                nombreDeVies = 5;
                                system("PAUSE");
                                return 0;
                                }
                                ou alors c'est mieux de mettre :
                                #include <stdio.h>
                                #include <stdlib.h>
                                int main(int argc, char *argv[])
                                {
                                long nombreDeVies = 5;
                                system("PAUSE");
                                return 0;
                                }

                                ?????
                                1. HACKER 712 tu connais le C par coeur ?
                                  Tu as déjà créer des programmes utiles et les as tu publier sur des sites ?
                                  1. Contributeur
                                    Je n'ai pas vu cette question.

                                    Mais bien sur que non !!!!!

                                    Personne ne le connais par coeur, il y a trop de choses !
                                    J'ai juste fais des trucs qui m'amusent, mais jamais de distribution... non non..
                                • 1
                                • 2
                                • 3