Problème sur un prog pourtantsimple C
mickmac
Messages postés
415
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Voilà quelque chose cloche dans mon programme mais je vois pas du tout quoi;
Ca saute en plus et ça affiche pas mon 3eme printf mais je vois pas pourquoi...
Si vous pouvez m'aider ça serait avec plaisir
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char x=0;
int y=0;
char z=0 ;
printf("choisissez un entier\n");
scanf("%d",&x);
printf("choisissez un réel\n");
scanf("%e",&y);
printf("choisissez une lettre\n");
scanf("%c",&z);
printf("vous avez choisi:\n %d \n %e \n %c \n",x,y,z);
return 0;
}
merci
Voilà quelque chose cloche dans mon programme mais je vois pas du tout quoi;
Ca saute en plus et ça affiche pas mon 3eme printf mais je vois pas pourquoi...
Si vous pouvez m'aider ça serait avec plaisir
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char x=0;
int y=0;
char z=0 ;
printf("choisissez un entier\n");
scanf("%d",&x);
printf("choisissez un réel\n");
scanf("%e",&y);
printf("choisissez une lettre\n");
scanf("%c",&z);
printf("vous avez choisi:\n %d \n %e \n %c \n",x,y,z);
return 0;
}
merci
A voir également:
- Problème sur un prog pourtantsimple C
- Robot prog - Télécharger - Édition & Programmation
- Clear prog - Télécharger - Sécurité
- Prog dvb - Télécharger - Télévision
- Aide pr premier pas en prog ✓ - Forum Programmation
- Pb advpack.dll lors d'installation de prog - Forum Windows
3 réponses
Bonjour,
scanf("%e",&y);
Attention, tu as mis int y; au lieu de double y pour un réel.
De plus, je te conseille de mettre %f au lieu de %e, sinon, le nombre s'affichera en forme exponentielle.
Pour les entiers, je te conseille d'utiliser int plutôt que char (même si c'est juste).
De plus, il faut faire attention avec les scanf. Il y a très souvent le '\n' qui vient se stocker dans le buffer clavier et qui sera lu avec le scanf("%c",...). Il faut donc vider le buffer.
Par exemple :
Google is your friend
scanf("%e",&y);
Attention, tu as mis int y; au lieu de double y pour un réel.
De plus, je te conseille de mettre %f au lieu de %e, sinon, le nombre s'affichera en forme exponentielle.
Pour les entiers, je te conseille d'utiliser int plutôt que char (même si c'est juste).
De plus, il faut faire attention avec les scanf. Il y a très souvent le '\n' qui vient se stocker dans le buffer clavier et qui sera lu avec le scanf("%c",...). Il faut donc vider le buffer.
Par exemple :
#include <stdio.h> int main(void) { int x; double y; char z; printf("choisissez un entier\n"); scanf("%d",&x); printf("choisissez un réel\n"); scanf("%lf",&y); getchar(); /*on lit le '\n' précédemment stocké*/ printf("choisissez une lettre\n"); scanf("%c",&z); printf("vous avez choisi:\n %d \n %f \n %c\n",x,y,z); return 0; }
Google is your friend
Faut mettre %d dans le scanf et le printf du nombre réel.
"Moi je dis que le plus fort entre l'hippopotame et l'éléphant, c'est encore le rhinocéros !"
"Moi je dis que le plus fort entre l'hippopotame et l'éléphant, c'est encore le rhinocéros !"
Salut
Ton code est vraiment pas génial, déjà ça ne sert strictement à rien de mettre la valeur 0 sur une valeur char ! Elle est sensé prendre la valeur d'une lettre donc ne l'initialise pas !
Sauf que justement cette variable prend une lettre et tu demande d'entré un entier donc je te fais un bref résumé :
Pour un entier :
int a; (que tu peux initialiser parfois à 0)
scanf("%d", &a);
Pour une lettre :
char a;
scanf("%c", &a);
Pour un nombre décimal :
double a;
scanf("%lf", &a);
Déjà essaie avec sa ! :)
Ton code est vraiment pas génial, déjà ça ne sert strictement à rien de mettre la valeur 0 sur une valeur char ! Elle est sensé prendre la valeur d'une lettre donc ne l'initialise pas !
Sauf que justement cette variable prend une lettre et tu demande d'entré un entier donc je te fais un bref résumé :
Pour un entier :
int a; (que tu peux initialiser parfois à 0)
scanf("%d", &a);
Pour une lettre :
char a;
scanf("%c", &a);
Pour un nombre décimal :
double a;
scanf("%lf", &a);
Déjà essaie avec sa ! :)
Certes, mais quand on débute en C et qu'on met un char pour désigner un entier. Le risque d'overflow n'est pas loin ^^.
Je pense que lorsqu'on débute, il n'y a que deux types à retenir en C pour les nombres :
int / double.
Par la suite, on pourra s'orienter vers char / short / int / long / long long (ISO C99) puis float / double / long double (et d'autres que j'ai sûrement oublié ^^).
Enfin ce n'est que mon avis :-).
Je pense que lorsqu'on débute, il n'y a que deux types à retenir en C pour les nombres :
int / double.
Par la suite, on pourra s'orienter vers char / short / int / long / long long (ISO C99) puis float / double / long double (et d'autres que j'ai sûrement oublié ^^).
Enfin ce n'est que mon avis :-).