''x est élément de double'' possible en C?

Fermé
sam234 - 27 févr. 2011 à 03:24
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 27 févr. 2011 à 11:17
Bonjour,


je suis dans mes débuts en programmation et en C, et je me pose actuellement une question à laquelle je ne suis pas capable de répondre par moi même et par le site du zéro. Comme dans le titre : comment coder ''est élément de'' en C ?

Je vous met en contexte.

Ma calculatrice fonctionne nickel (oui je programme une calculatrice en console en ce moment) , mais il y a quand même un défaut... Quand je demande d'entrer 2 nombres pour qu'ils s'additionnent, un malin peut rentrer, par exemple, ''fsheri''.
Et si il fait ça, ma calculatrice plante et refait une boucle à l'infini...

switch(choix)
{
case 1:
printf("\n");
printf("Addition selectionnee!\n\nEntrez le premier nombre: ");
scanf("%lf",&addition1); <----------------- ici
printf("\n");
printf("Entrez le second nombre: ");
scanf("%lf",&addition2); <----------------- et ici
resultatAddition=addition1+addition2;
printf("\n%f + %f = %f",addition1,addition2,resultatAddition);
break;

Je cherchais donc un moyen du genre:
if(!(addition1*est élément de*double))
addition1=0

Est-ce possible?

Sinon, quel moyen pourrais-je utiliser pour contrer les ''fhse'' pour éviter le plantage de mon programme?

Merci d'avance :P
A voir également:

1 réponse

supernormal Messages postés 13 Date d'inscription samedi 26 février 2011 Statut Membre Dernière intervention 27 février 2011 2
27 févr. 2011 à 03:44
Salu,
si j'ai bien compris ton problème ce que tu veut, c'est contrôler ce que l'utilisateur entre:

cela fait un an que j'ai pas touche au c sachant que j'ai pas été plus loin que la console, alors je vais te donner une solution du programmeur du dimanche :P

Tu fait une boucle While a chaque fois que tu demande d'entrer une valeur et après ça on vérifie si la valeur est >= 0 ou <0 (sinon en continu de faire la boucle).

je sais qu'il existe des méthode plus professionnel que ça xP en attendant utilise celle-là et continu ton programme dans l'espoir qu'il y est de vrai programmeur qui te réponde.
cordialement.
0
J'ai essayé ta technique, franchement j'y arrive vraiment pas...
Merci quand même :P
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
27 févr. 2011 à 11:17
Bonjour,
Le plus propre est d'utiliser une fonction de type fgets pour lire toute la chaîne et ensuite de la convertir avec strtol.
Sinon ce que tu peux faire, c'est de tester le retour de ta fonction scanf pour voir si l'utilisateur a bien rentré un nombre, vider le buffer clavier (pour éviter la boucle infinie) et vérifier que le nombre n'est pas trop grand non plus.
Je te donne des pistes, si tu veux un exemple je peux t'en faire un.
Cdlt,
0