Intervalle C++
Résolu
Bonjour,
comment fait-on pour obliger l'utilisateur du programme à choisir un entier entre 0 et 20 qui represente une note d'un éleve? Je ne trouve pas d'info sur internet et j'ai essayé:
int note<20 & note >0;
mais ça ne marche pas.
Merci d'avance.
comment fait-on pour obliger l'utilisateur du programme à choisir un entier entre 0 et 20 qui represente une note d'un éleve? Je ne trouve pas d'info sur internet et j'ai essayé:
int note<20 & note >0;
mais ça ne marche pas.
Merci d'avance.
Configuration: Windows / Chrome 92.0.4515.159
6 réponses
-
Bonjour,
avec un test if peut-être ?
if(note >= 0 && note <= 20)
tu ne connais pas les base de C++ à ce que je vois ... -
Bah, on a tous débuté ...
Par contre il y a surement de bons tutos sur le Net pour acquérir les bases, par exemple:
https://openclassrooms.com/fr/courses/1894236-programmez-avec-le-langage-c -
mais je connaissais le if juste je n'y avais pas pensé dans cette situation pcq je pensais qu'il fallait mettre l'intervalle en même temps de définir l'entier.
mais merci pour le lien je vais aller voir. -
int permet de déclarer une variable entière
int note; if(note >= 0 && note <= 20) { //on fait un truc } else { // sinon, on fait autre chose } -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Bah int ou float, le plus important est que Tarik apprenne les bases du langage, voire même les principes de la programmation dans un langage en général
(Je me demande si j'aurais débuté avec C++, d'ailleurs ...) -
Bonjour,
Traditionnellement on utilise une boucledo ... while
pour demander une valeur devant vérifier une certaine contrainte, et on répète la boucle si la valeur saisie est non conforme.
Note que la note doit être déclarée au préalable, et que la déclaration du type ne permet pas de spécifier une borne inférieure ou supérieure pour la note. C'est simplement parce que pour C++, (et n'importe quel langage d'ailleurs) un double / float / int occupent une place prédéterminée, indépendamment des contraintes que tu veux lui imposer. Ce sont donc deux aspects indépendants et qui n'interviennent pas sur la même instruction.
Contrairement à ce qui a été proposé par arscy, utiliser undouble
est surdimensionné (8 octets = 64bits), unfloat
(4 octets = 32 bits) prendra moins de place et est suffisamment précis dans ce cas d'usage. Lesdouble
s sont utilisés uniquement pour des calculs qui requièrent une grande précision. En vrai on pourrait faire d'ailleurs beaucoup mieux qu'unfloat
, mais passons.
Pour demander une valeur à l'utilisateur en C++, on utilise traditionnellement le fluxstd::cin
.
Ensuite l'opérateur&
est le ET bit à bit (donc qui permet de combiner deux masques). Il ne doit pas être confondu avec l'opérateur logique qui se note&&
en C++.
Voici une manière simple d'écrire le programme :
#include <iostream> int main(){ using namespace std; unsigned note; do { cout << "Saisir une note entre 0 et 20 : "; cin >> note; } while (note < 0 || note > 20); cout << "Note saisie : " << note << endl; return 0; }
Cependant ce n'est pas suffisant (par exemple si l'utilisateur saisit "éé", le C++ va considérer que la note saisie est 0). Pour régler le problème, on peut contrôler que le flux est correct, et si ça n'est pas le cas, nettoyerstd::cin
comme expliqué ici (sans quoi on va déclencher une boucle infinie) :
#include <iostream> #include <limits> int main(){ using namespace std; unsigned note; do { cout << "Saisir une note entre 0 et 20 : "; cin >> note; if (cin.fail()) { cin.clear(); cin.ignore(numeric_limits<streamsize>::max(), '\n'); note = -1; } } while (note < 0 || note > 20); cout << "Note saisie : " << note << endl; return 0; }
Bonne chance