2015-03-13 3 views
-4

Эта программа должна останавливаться, когда пользователь нажимает Y или y, но мое тестовое тестирование не влияет на код, программа продолжает запрашивать у пользователя следующий номер.Почему условие тестирования не действует

#include<iostream.h> 
#include<conio.h> 
#include<math.h> 

int prime(int); 

void main(void) 
{ 
    int n; 
    char ch='i'; 

mylabel: 
    cout << "\nEnter num: "; 
    cin >> n; 
    cout << prime(n); 
    cout << "\nPress N or n to exit : "; 
    if (getche() != ('N' || 'n')) { 
     goto mylabel; 
    } 
    cout << ",,,"; 
} 

int prime(int p) 
{ 
    int test = 1; 
    if((p>2 && p%2==0) || p==0 || p==1 || p<0) 
     return 0; 
    for (int i=3 ; i<=(int(sqrt(p)))+1 ;i+=2) 
    { 
     if(p%i==0) 
     test=0; 
     break; 
    } 
    return test; 
} 
+0

Почему downvote? – Illaz

+3

Потому что это глупый вопрос, который не поможет никому в будущем. Где вы читали это: if (getche()! = ('N' || 'n')) '- правильный способ объединить условия? Не ваша книга на C++, конечно. –

+0

@LightnessRacesinOrbit Каков правильный путь? – Illaz

ответ

1

Проблема заключается в том, что вы принимаете небрежный английский язык и перевод его в буквальном смысле создать сломанный C++.

Когда вы говорите:

the character is not 'N' or 'n' 

это, в то время как банальность, это неправильно. По той же причине ваш код на C++ неправильный. Вы сравниваете getche() с 'N' || 'n', выражение, которое применяет булево-ИЛИ к двум char s, всегда приводящее к true.

Вы хотите сказать, либо из:

the character is neither 'N' nor 'n' 
the character is not 'N' and the character is not 'n' 

C++ имеет только эквивалент для последней конструкции, и вот оно:

if (getche() != 'N' && getche() != 'n') 

Конечно, вы только хотите, чтобы прочитать один знак, так:

const char c = getche(); 
if (c != 'N' && c != 'n') 
+0

Все еще не работает – Illaz

+2

@HashirOmer: Я не знаю, что вы ожидаете от меня, с огромным количеством информации в вашей последней обратной связи. –

+2

Благодарим вас за отзыв. Нажмите 4 для вариантов оплаты. –

Смежные вопросы