2017-04-11 1 views
-3

Je suis en train de faire ce travail de code:C++ faire en boucle ne fonctionne pas

#include <iostream> 

using namespace std; 

int main() 
{ 

int i; 
do 
{ 
    cout << ("please enter a number between 1 and 10"); 
    cin >> i; 

} while(i > 10 && i < 1) 
    cout << "the square of the number you have entered is " << i*i; 
} 

Fondamentalement, l'idée est que l'utilisateur entre un nombre compris entre 1 et 10. Alors que le nombre ne soit pas entre 1 et 10, il demande toujours à l'utilisateur d'entrer un nombre entre les valeurs. Ensuite, lorsque le nombre est entre les valeurs, il est au carré et renvoyé à l'utilisateur.

Je ne vois pas pourquoi cela ne fonctionne pas

Toute aide est appréciée

+1

changer la condition de "et" à "ou". – Meccano

+0

Pensez un peu plus à votre code. –

+5

Comment «i» peut-il être à la fois supérieur à 10 et inférieur à 1 en même temps? –

Répondre

2

Vous avez:

while (i > 10 && i < 1) 

Vous voulez:

while (i > 10 || i < 1) 
+0

Ou peut-être 'while (i> 1 && i <10)' ... – cbuchart

+0

Envisager d'ajouter une description pour OP –

0

Vous devez utiliser un ||, cette condition avec && ne sera jamais vraie.

0
while (i > 10 && i < 1) 

Votre condition est logiquement défectueuse; si réinterprété, il est dit:

tout i est supérieure à 10 ETi est inférieur à 1

A en juger par votre code, l'opérateur || doit être utilisé:

} while (i > 10 || i < 1); 
0

Comme d'autres mentionné, votre état est défectueux. un nombre ne peut évidemment pas être inférieur à 1 et supérieur à 10 en même temps, de sorte que la boucle while se ferme immédiatement après l'instruction do.

#include <iostream> 

using namespace std; 

int main() 
{ 

    int i; 
    do 
    { 
     cout << ("please enter a number between 1 and 10"); 
     cin >> i; 

    } while (i < 1 || i > 10) 

    cout << "the square of the number you have entered is " << i*i; 
} 
0

La condition de la boucle est faux et ne sera jamais en boucle, comme i ne peut pas être inférieur à 1 && supérieur à 10 en même temps. Vous devez utiliser l'opérateur logique OR (||) à la place. En outre, il doit y avoir un point-virgule placé après l'instruction do-while. Et vous voulez probablement et la fin de la ligne placée après l'invite. En outre, vous ne voulez pas commencer la mauvaise habitude de polluer l'espace de noms global, même avec l'awesomeness de std. Donc:

#include <iostream> 

int main() 
{ 
    int i; 
    do { 
     std::cout << "please enter a number between 1 and 10\n"; 
     std::cin >> i; 
    } while (i > 10 || i < 1); 

    std::cout << "the square of the number you have entered is " << i*i << std::endl; 
}