2016-10-11 2 views
1

Я пытаюсь повторить цикл WHILE в моей программе. Я занимаюсь этим около 4 часов, поэтому, возможно, я просто что-то пропустил.C++ while Loop не повторится

Я не могу получить цикл, чтобы повторить, независимо от того, что я набираю. Кроме того, если я ввешу более одного символа в приглашении, он пропустит все 7 моих последующих циклов.

Тогда, даже лучше, переменные в конце даже не меняются, когда что-то набирается, надеюсь, вы можете помочь мне со всеми перечисленными выше проблемами (чем проще, тем лучше). Но на этот момент я возьму только одну.

cout << "Welcome. Input anything to start the sales reporting process.\n\n"; 
cin >> start; **//If I enter more than one character here it skips my other loops** 
if (start == start) 
{ 
    cout << "\n\nPlease enter the amount of each sale for Darwin when prompted, only enter one at a time.\n"; 
    cout << "When you are finished entering sales, input a '1'.\n\n"; 
    cout << "Enter a sale for Darwin: "; 
    cin >> darwinSale; 
    cout << endl << endl; 
    while(darwinSale =! 1) 
    { 
     cout << "Enter a sale for Darwin: "; 
     cin >> darwinSale; 
     if (darwinSale <= 50999) 
      darwinCom = darwinSale * 0.04; 
     if (darwinSale >= 51000 and darwinSale <= 125999) 
      darwinCom = darwinSale * 0.05; 
     if (darwinSale >= 126000 and darwinSale <= 200999) 
      darwinCom = darwinSale * 0.06; 
     if (darwinSale >= 201000) 
      darwinCom = darwinSale * 0.07; 
     darwinComTotal = darwinComTotal + darwinCom; 
     darwinTotal = darwinSale + darwinTotal; 
     cout << endl << endl; 
    } 
+3

попробуйте изменить его на время (darwinSale! = 1) – xDJR1875

+3

Ах, да, страшный оператор '=!'. Измените его на '! ='. Как написано, в 'darwinSale =! 1', '!' Применяется к '1', а результат (' 0') присваивается 'darwinSale', производя значение 0 и немедленно заканчивая цикл. –

+1

Также ваш оператор if избыточен, start == start всегда должен быть равен true, поскольку он сравнивается с самим собой. –

ответ

7

В вашем состоянии в то время, вы на самом деле проверки:

while(drawinSale = !1) 

и 1 проверяет, 1 == NULL возвращает Wich 0

Вы должны вместо этого сделать что:

while(drawinSale != 1) 
+2

Нет проверки NULL - '1' преобразуется в' true', который затем сбрасывается на 'false', который преобразуется в' 0'. – molbdnilo

+0

Спасибо! Я тебе обязан, господин. –