Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
3 / 3 / 0
Регистрация: 31.10.2017
Сообщений: 85
1

"ИЛИ" работает как "И"

10.11.2017, 13:57. Показов 880. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу программу которая читает слова по одному за раз пока не будет введена отдельная буква q. И сколько я тут не бился словно рыба об лед, но пока в выражении ниже не поменял И на ИЛИ ничего не получилось. Помогите понять почему у меня ИЛИ ведет себя словно И.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
int main(){
    char str[30];
    cout << "Vvedi stroku: ";
        cin.getline(str,30);
    while (str[0] != 'q' || str[1] != '\0'){   //Условие при котором будет осуществлен
        cout << "Vvedi sroku: ";           // выход из цикла
        cin.getline(str,30);
    }
           return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2017, 13:57
Ответы с готовыми решениями:

Как работает свойство SerialPort.BytesToRead или как лучше сделать проверку работает ли прибор?
Кто может пояснить как работает свойство BytesToRead? Почему при таком коде: for (int i = 0; i...

Include не работает так как хочется или как работает инклуд
Доброго времени суток. Имею структуру папок: basic/ libs/ /sumLib.php ...

SelText в textBox'e отчёта не работает или работает не так как в форме?
Пробовал всяко-разно выудить выделенный текст - не выходит. Пишет: &quot;Введенное выражение содержит...

setprecision() не работает, или работает не так как нужно
cout &lt;&lt; setw(5) &lt;&lt; &quot;X=&quot; &lt;&lt; setprecision(2) &lt;&lt; X; cout &lt;&lt; setw(20) &lt;&lt; &quot;X=&quot; &lt;&lt; setprecision(0)&lt;&lt;...

Как запустить Batch-файл? Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не работает или "вылетает". [Руководство]
Как запустить Batch-файл? Как диагностировать проблему или ошибки в синтаксисе, когда Bat-файл не...

7
7789 / 6556 / 2984
Регистрация: 14.04.2014
Сообщений: 28,661
10.11.2017, 14:01 2
Что именно ты вводишь?

Добавлено через 1 минуту
Общее НЕ тогда:
C++
1
while (!(str[0] == 'q' && str[1] == '\0'))
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
10.11.2017, 14:07 3
Цитата Сообщение от CodeSeeker Посмотреть сообщение
у меня ИЛИ ведет себя словно И
потому что если работаешь с условиями "нет", то ИЛИ для них работает именно так, как И для условий "да". И наоборот.
0
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
10.11.2017, 14:08 4
Ну вот смотри, стоит у тебя "и" и ты ввел qwe. Первое условие не выполняется (т е вот это - str[0] != 'q') а второе выполняется (т е вот это - str[1] != '\0'), а сам "и" так устроен что оба условия должны быть правдой поэтому он выходит из цикла. Если поставить "или" то что бы выйти из цикла оба условия должны не выполнятся
0
3 / 3 / 0
Регистрация: 31.10.2017
Сообщений: 85
10.11.2017, 14:15  [ТС] 5
no swear, вот я и имею ввиду, что чтобы выйти из цикла должны выполниться оба, соответственно там должны стоять две &&, а стоят два ||. Вот например ввожу я просто 'q', и получается что первый элемент массива это q, а второй \0 - вот тут то и должен произойти выход из массива, т.е. оба условия выполниться должны.
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
10.11.2017, 14:18 6
Цитата Сообщение от CodeSeeker Посмотреть сообщение
C++
1
2
while (str[0] != 'q' || str[1] != '\0'){  //Условие при котором будет осуществлен
     cout << "Vvedi sroku: ";// выход из цикла
вообще то в скобках условия выполнения цикла, а не выхода из него
вызываем единичное q
str[0] != 'q' ЛОЖЬ str[1] != '\0' ЛОЖЬ, ЛОЖЬ + ЛОЖЬ =ЛОЖЬ цикл не выполняется
если нужно с И то используется правила Моргана
C++
1
while (!(str[0] == 'q'&&str[1] == '\0'))
0
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
10.11.2017, 14:24 7
Выражение
C++
1
while (str[0] != 'q' || str[1] != '\0')
значит "продолжать ввод строк, пока в первом символе любой символ кроме q, или же второй символ - любой кроме конца строки". Если же заменить "или же" на "и", то при символе конца строки получится "символ не q и любой кроме конца строки не выполнился = нет".
0
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
10.11.2017, 14:24 8
Лучший ответ Сообщение было отмечено CodeSeeker как решение

Решение

C++
1
2
3
4
5
        while (str[0] != 'q' && str[1] != '\0')
    {   
        cout << "Vvedi stroku: ";
        cin.getline(str, 30);
    }
CodeSeeker, Повторюсь, вводим qwe и смотрим на условия While. Видим что первое условие цикла(str[0] != 'q' - на самом деле он равен q) не выполняется а второе(str[1] != '\0' - это не конец строки) выполняется, а "и" так устроен что оба условия должны выполнится, не важно while, if или do while, так как одно условие не выполняется(является ложью) то произойдёт выход из цикла
Поэтому "или" ставь. При или оба условия должны не выполниться
0
10.11.2017, 14:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.11.2017, 14:24
Помогаю со студенческими работами здесь

Монитор не работает через VGA ,работает через встороенный адаптер .мне успокоиться или спасать комп .это видеокарта или другое?подскажите пожалуйста!
монитор не работает через vga.работает только через встроенный адаптер.мне успокоиться,или спасать...

Как работает Intellisense или как компиляторы С анализируют структуры ?
Предположим есть структура : typedef struct A { char A; int* B; struct C; ...

Как работает get() или getline() в C++
Вот есть прога на c++. Которая считывает символы/строки в файле. Считываю я через, get(), getline()...

ЮСБ 3.0 работает как 3.0 или 2.0?
Доброго всем. Параноя параноя. Есть комп, есть порты ЮСБ 3.0. Похимичил с дровами ЮСБ 3.0 (удалял,...

Va_arg или как это работает
Доброго времени суток, форумчане! Попалась такая трудность и непонимание: Решил написать нечто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru