Bonjour à vous, depuis quelques temps je m’amuse à afficher un message différent selon ce que l’utilisateur à saisie dans le clavier.
Question : Est-ce une bonne pratique d’écrire de tels codes ? ( ici je parle de différencier les messages en fonction de ce qu’il rentre dans le clavier, il se peut qu’il ait un problème là où on ne se doute point)
code 1 :
#include <iostream> #include <vector>
int main () { std::cout « "Entre le nombre d’element(s) du tableau de notes : "; int elements { 0 };
while (!(std::cin >> elements) or (elements < 0))
{
if (elements < 0)
{
std::cout << "Nombre negatif entre, re-saisir le nombre d'elements du tableau de notes : ";
}
else if (!(std::cin >> elements))
{
std::cout << "Entre invalide (autre chose qu'un nombre), re-saisir le nombre d'elements du tableau de notes : ";
std::cin.clear();
std::cin.ignore(500, '\n');
}
}
std::cout << "OK" << std::endl;
return 0;
}
ou bien
code 2 :
#include <iostream> #include <vector>
int main () { std::cout « "Entre le nombre d’element(s) du tableau de notes : "; int elements { 0 };
while (!(std::cin >> elements) or (elements < 0))
{
if (elements < 0)
{
std::cout << "Nombre negatif entre, re-saisir le nombre d'elements du tableau de notes : ";
}
else if (!(std::cin >> elements))
{
std::cout << "Entre invalide (autre chose qu'un nombre), re-saisir le nombre d'elements du tableau de notes : ";
}
std::cin.clear();
std::cin.ignore(500, '\n');
}
std::cout << "OK" << std::endl;
return 0;
}
Remarque personnel : Dans le premier bout de code, à chaque fois que l’utilisateur entre un nombre négatif, ce dernier est toujours présent dans le buffer. Alors que dans le code 2 : les caractères précédemment mémorisés (même les nombres négatifs précédemment entrés sont ignorés :le buffer est vidé a chaque fois). Est ce que je me trompe ? Et lesquels de ces deux codes vaut mieux que l’autre ?
Peut-il y avoir un débordement du buffer si l’utilisateur saisie indéfiniment des nombres négatifs (dans le code 1) jusqu’à que le buffer soit plein.
Et Pourquoi dit-on que rien n’est infinie en informatique lorsque l’on parle des boucles infinies ? (un peu perdu sur ce coup)
J’espère été très concis sur mes propos.