Comment éviter le bug

Fermé
bobys - 13 janv. 2013 à 14:23
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 13 janv. 2013 à 21:45
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 samedi 18 décembre 2004 Statut Membre Dernière intervention 12 avril 2022 238
13 janv. 2013 à 16:17
Si on avait un extrait du code, ça serait plus facile
0
#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 samedi 18 décembre 2004 Statut Membre Dernière intervention 12 avril 2022 238
13 janv. 2013 à 16:42
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
13 janv. 2013 à 21:40
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
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 samedi 18 décembre 2004 Statut Membre Dernière intervention 12 avril 2022 238
13 janv. 2013 à 16:56
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
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 dimanche 6 janvier 2013 Statut Membre Dernière intervention 13 janvier 2013
13 janv. 2013 à 18:07
ça m'aiderai beaucoup que tu me fasse le bout de code ...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
Modifié par fiddy le 13/01/2013 à 21:52
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