Question pour les conditions et les variables

Question pour les conditions et les variables - C - Programmation

Marsh Posté le 11-02-2014 à 17:43:53    

Salut à tous.
 
ça fait quelques jours que je me suis lancé dans la programmation en suivant ce petit tutoriel bien sympathique :  
http://fr.openclassrooms.com/infor [...] on-if-else
 
J'ai suivi tout le tuto dans l'ordre ( je me suis arrêter à la page des conditions ), mais je ne trouve pas réponse à mes questions.  
 
Effectivement, je viens d'apprendre à utiliser des données que l'utilisateur tape grâce à la fonction scanf ( pour une calculatrice par exemple ). J'aimerais faire de même avec des conditions ( if et tout ça ) mais il ne se passe rien. Voilà le code que j'ai mis :
 
#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
 int age=0;
 printf("Entrez votre age :" );
 scanf("%d", &age);
 if (age >=18)
 {
  printf("Vous êtes majeur !" );
 }
  return 0;
}
 
Qu'est-ce qui ne vas pas ?  
 
Merci d'avance.

Reply

Marsh Posté le 11-02-2014 à 17:43:53   

Reply

Marsh Posté le 11-02-2014 à 18:13:39    

Bonsoir !
 
Il manque le "\n" dans le printf, la ligne a de bonnes chances de ne pas être affichée / être mal affichée.
 
Bonne continuation !

Reply

Marsh Posté le 12-02-2014 à 08:43:14    

Bonjour,
 
Ton code fonctionne, je ne vois pas trop ton soucis.
Après l'affichage c'est autre chose ^^"  
 
La question s'affiche ? Sur quoi tu compile ?


---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
Reply

Marsh Posté le 12-02-2014 à 09:09:50    

Bonjour,
 
Je crois que la question est qu'il voudrais faire un scanf seulement sous certain condition... En tout cas c'est ce que je comprends.
 
Sinon +1 pour le reste des commentaires, le code est correct tu ne devrais pas avoir de problème si tu met un age supérieur ou égal a 18.
 
Par contre si tu veux afficher une chaine de caractère si tu écrit un age inférieur il faut mettre un else ( sinon )
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char *argv[])
  4. {
  5. int age=0;
  6. printf("Entrez votre age :" );
  7. scanf("%d", &age);
  8. if (age >=18)
  9. {
  10.   printf("Vous êtes majeur ! \n" );
  11. }
  12. else
  13. {
  14.    printf("Vous n'êtes pas majeur \n" ); //Phrase d'exemple
  15. }
  16.   return 0;
  17. }


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 12-02-2014 à 11:07:58    

ce serait pas mal de vérifier le code de retour de scanf, afin de t'assurer que l'utilisateur a bien entré une valeur telle que tu l'attends. Scanf te donne le nombre de paramètres qu'il a réussi à lire. Dans ton cas, vu que tu ne lis qu'une valeur, scanf te retournera 1 pour un succès et 0 pour un échec à lire un entier comme tu le demandes.


---------------
last.fm
Reply

Marsh Posté le 12-02-2014 à 17:40:39    

Salut,  
 
Je pense que je me suis mal exprimé ^^. En fait, dans le tuto mentionné plus haut : http://fr.openclassrooms.com/infor [...] on-if-else . La condition " if " n'est applicable que si la variable ( de l'age dans le cas présent " est défini par le programmeur. J'aimerais pouvoir faire défénir la valeur de la variable par l'utilisateur ( avec la commande scanf ). J'ai donc essayer le code du dessus mais ça ne marche pas, quand j'entre l'âge il ne se passe rien....

Reply

Marsh Posté le 12-02-2014 à 19:32:36    

Mon code fonctionne je l'ai tester cette après midi ^^
 
Et je viens de re-tester ça fonctionne -_-
 


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 12-02-2014 à 21:49:03    

+1 le code est fonctionnel.
 
Peux-tu nous expliquer comment tu le tests ? Avec un IDE ? lequel ?


---------------
"La valeur d'un homme tient dans sa capacité à donner et non dans sa capacité à recevoir." Albert Einstein / "Dans la nature, tout a toujours une raison. Si tu comprends cette raison, tu n'as plus besoin de l'expérience." Léonard De Vinci
Reply

Marsh Posté le 12-02-2014 à 22:19:10    

Ben... wtf là, je suis sur code::blocks et je viens de retester, ça marche. La dernière fois ça s’arrêtait à " 18 " ( donc après avoir taper notre âge^^)
 
Sinon j'ai une question très importante :
 
Donc voilà j'ai récemment achevé le chapitre " calcul de base " qui nous apprends à faire des calculs. Là dessus j'ai eu l'idée de réaliser un petit programme tout con permettant de calculer son indice de Quételet. Cet indice nous sert juste à savoir si on est obèse, normale, trop maigre et tout ça. Pour trouver cet indice, un calcul tout con s'impose : notre poids divisé par notre taille au carré. Cepandant une fois sur code:blocks ... Bah c'est pas aussi simple que ça.  
 
#include <stdio.h>
 
#include <stdlib.h>
 
int main(int argc, char *argv[])
 
{
 
 int poids = 0; //déclaration variable nombre entier
 
 double taille = 0, indiceQuétel=0; //déclaration variable nombre décimale
 
 printf("Entrez votre poids :" ); //Je demande à l'utilisateur de doner son poids
 
 scanf("%d", &poids); //récupération de la saisie
 
 prinf("Entrez votre taille:" );
 
 scanf("%f", &taille); //récupération saisie nombre décimal.taille.
 
 //Ensuite il faut faire le calcul et là j'ai besoin d'aide :
 
 poids/taille²=indiceQuétel;
 
 printf("%d/%f²=%f", poids, taille, indiceQuétel);
 
 if (indiceQuétel >= 30)
 
 {
 
     printf("Vous êtes obèse" );
 
 }
 
 if (indiceQuétel > 25 &&indiceQuétel <30 )
 
 {
 
     printf("Vous êtes en léger excès de poids" );
 
 }
 
 if (indiceQuétel <17.5)
 
 {
 
     printf("Votre poids est insuffisant" );
 
 }
 
  return 0;
 
}
 
Voici le code que j'ai réalisé. Bon bien évidemment il marche pas. Mais j'ai l'impression que c'est pas trop mal partie, j'ai juste besoin de vos lumière pour clarifier quelques points :
1 : Dans les divisions il faut mettre le dividende et le diviseur en faux chiffre décimal ( 17.0  ), dans mon cas, c'est nécessaire ?
2 : Comment on fait des carrés ? J'ai rien vu à ce sujet
3 : à la fin dans les conditions, comment savoir le " if ... " s'applique au quotient du calcul ou à la variable telle que je l'ai déclaré ? ( Bon j'avoue là c'est flou )
4: Vous croyez que 15 ans c'est trop jeune pour programmer ?
Sinon, ce serrait SUPER sympas de votre part que vous corrigiez le code et que vous m'expliquiez mes erreurs, encore désolé si j'ai pas été clair...
Antoine.
PS : désolé des fautes, je ne suis pas un as du tout en orthographe.

Reply

Marsh Posté le 12-02-2014 à 22:28:02    

Re,
 
Met ton code entre les balise cpp pour plus de lisibilité :)
 
1 : Tu met tout en double pour que ton cacul te donne les chiffre après la virgules
2 : une fonction te permet de faire ça pow(nombre, puissance);
3 : Pas compris xD
4 : Il est jamais trop tôt. Apprend a coder quand tu as le temps, ne met pas tes études de coté pour ça. Au moins si tu aime ça et que tu décide d'en faire ton métier tu aura déjà un bagage quand tu arrivera à l'école tu aura plus qu'a apprendre la logique informatique et les bonne habitude et tu sera major de ta promo :D
 


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 12-02-2014 à 22:28:02   

Reply

Marsh Posté le 13-02-2014 à 03:42:22    

Citation :

1 : Dans les divisions il faut mettre le dividende et le diviseur en faux chiffre décimal ( 17.0  ), dans mon cas, c'est nécessaire ?

ben déjà déclare aussi le poids comme un double, après tout sera en double et ça sera pas nécessaire du tout.  

Citation :

2 : Comment on fait des carrés ? J'ai rien vu à ce sujet

On multiplie le nombre par lui même.

Citation :

4: Vous croyez que 15 ans c'est trop jeune pour programmer ?

pas du tout.
 
Note: éviter les accents dans les variables C.
 
 
Grosso modo, ce que vous vouliez écrire, c'est:

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main(int argc, char *argv[])
  4. {
  5.   double  poids, taille, indiceQuetel;
  6.   printf("Entrez votre poids :" );
  7.   scanf("%f", &poids);
  8.   prinf("Entrez votre taille:" );
  9.   scanf("%f", &taille);
  10.   indiceQuetel = poids/(taille * taille);
  11.   if (indiceQuetel >= 30) {
  12.     printf("Vous êtes obèse\n" );
  13.   }
  14.   else if (indiceQuetel > 25) {
  15.     printf("Vous êtes en léger excès de poids\n" );
  16.   }
  17.   else if (indiceQuetel < 17.5) {
  18.     printf("Votre poids est insuffisant\n" );
  19.   }
  20.   return 0;
  21. }

 
Trois petites remarques:
- si la ligne a imprimer d'un printf n'est pas terminée par un \n, il peut être judicieux de faire fflush(STDOUT); ensuite
- Penser a vérifier que scanf a bien converti quelque chose.  
   Note: scanf c'est très très peu adapté a lire les données d'une saisie par un utilisateur (souvent pas conformes à ce que l'on attend). Faire plutôt un getline, et scanner la ligne obtenue.  
- vérifier que la taille n'est pas nulle, parce que le programme ne va pas aimer une division par 0  (vérifier aussi que ce que l'on a reçu de l'utilisateur n'est pas négatif)
 
A+,


Message édité par gilou le 13-02-2014 à 03:48:40

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed