Comment éviter le bug

bobys -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je lance un appel à l'aide, je viens de créer un logiciel ou la seule entrée possible est un nombre, sauf que si j'entre une lettre le logiciel bug, et je ne sais pas comment on fais pour genre envoyer un message d'erreur et redemander d'entrer une valeur.
Merci d'avance à celui ou celle qui me répondra.

8 réponses

mcfly10 Messages postés 1052 Date d'inscription   Statut Membre Dernière intervention   239
 
Si on avait un extrait du code, ça serait plus facile
0
bobys
 
#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{ system("color 12");
float montant, taux, remise, e ;
cout <<" 15% pour 100e, 25% pour 200e, 35% au dela. Saisissez le montant de vos achats pour connaitre le pourcentage de vos reductions : " ;
cin >> montant ;
if (montant < 100.) taux = 0. ;
else if (montant <= 100 < 200.) taux = 15. ;
else if (montant <= 200 < 300.) taux = 25. ;
else taux = 35. ;
remise = montant * taux/100. ;
montant = montant - remise ;
cout << "montant apres remise : " << montant ;
return main () ;
}

Je vous le met en entier, j'espére que vous pourrez m'aider.
Merci d'avance.
0
mcfly10 Messages postés 1052 Date d'inscription   Statut Membre Dernière intervention   239
 
Tu dois changer le type de ta variable montant, et la mettre de type char*

Puis tu pourras créer une seconde variable montant2 de type float, que tu affectera avec atof (ansi string to float).

char *montant;
float montant2;
cin >>montant;
montant2 = atof(montant);

Cherche un peu :)
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
C'est bien d'utiliser les pointeurs, c'est encore mieux de les allouer...
Si tu fais char *montant, tu ne peux pas faire cin >> montant; derrière sans allocation. Mais en C++, autant utiliser string, c'est fait pour.
atof() ? C'est obsolète...
0
bobys
 
Je n'ai pas bien compris je suis désolé ... Tu pourrai m'expliqué ou je doit introduire char, puis pourquoi je doit creer montant2 ? En tout cas merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mcfly10 Messages postés 1052 Date d'inscription   Statut Membre Dernière intervention   239
 
Tu auras 2 variables.

la première est de type chaîne (char*) qui est ce que l'utilisateur a tapé.

la seconde est de type float (exactement la même que celle que tu as actuellement).

Sauf que tu rempli le float par la fonction atof plutot que par le flux cin.

la fonction atof prend en paramètre un char*, il va chercher le nombre saisi, et retourne un float.
0
bobys
 
je met quoi en char et quoi en float alors ? et je remplace cin par atof ?
0
bobys Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
ça m'aiderai beaucoup que tu me fasse le bout de code ...
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Tu mélanges les headers C et C++...
En C++, on inclue cstdlib et non stdlib.h

else if (montant <= 100 < 200.) taux = 15. ;
else if (montant <= 200 < 300.) taux = 25. ;

Que veux-tu faire ? Si c'est pour dire que c'est entre 100 et 200, il faut faire : else if (montant >= 100 && montant < 200)
Et comme tu es dans un else, tu as la garantie que montant >= 100, tu peux donc juste mettre : else if (montant < 200)
De même pour : else if (montant < 300)
return main () ;
Il faut mettre return 0; à la fin de ton programme C++.

Google is your friend
0