Controle de saisie

Fermé
bobys - 15 janv. 2013 à 11:23
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 16 janv. 2013 à 20:28
Bonjour,
je souhaiterai savoir comment modifier mon logiciel pour faire un contrôle de saisie dessus pour éviter le bug en cas d'entrée d'une lettre ou d'un chiffre négatif. je vous met le logiciel ci-dessous, merci d'avance.

#include <iostream>
#include <cstdlib>
using namespace std;
int main ()
{ system("color 17") ;
float montant, taux, remise ;
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 <= 0 < 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 () ;
}



1 réponse

mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
16 janv. 2013 à 20:28
Pour commencer quelques remarques :

- évite d'utiliser "system", ça rend ton programme de système (par exemple windows)

- return main(); va engendrer une boucle infinie (une fois que ton main se termine, tu rappelles main). Normalement tu es sensé simplement retourner 0 si ton programme se termine correctement. Si tu veux que l'utilisateur appuie sur une touche avant de quitter le programme, tu peux par exemple précéder ce "return" par l'instruction "getchar()" (inclue <cstdio>).

- les tests dans tes if me paraissent extrêmement louches qu'as tu voulu écrire ?

Par exemple en C++, tester si x est dans [10, 20[ s'écrit :

if (x >= 10 && x < 20) {

}


Revenons au problème initial. Pour contrôler qu'une valeur vaut ce que tu veux, tu peux par exemple faire un "do while" qui se répète tant que la valeur ne respecte pas une certaine condition.

Exemple : Supposons que je m'intéresse à la même condition (x est dans [10, 20[). La boucle doit se répéter tant que x est < 10 ou >= 20.

#include <iostream>

int main() {
    int x;
    do {
        std::cout << "x =? ";
        std::cin >> x;
    } while (x < 10 || x >= 20);
    std::cout << "x = " << x << std::endl;
    return 0;
}


... ce qui donnera à l'exécution si on saisit successivement les valeurs 30, 1, 5, 15 :

x =? 30
x =? 1
x =? 5
x =? 15
x = 15


Bonne chance
0