Форум программистов, компьютерный форум CyberForum.ru

Логическое и - C++

Восстановить пароль Регистрация
 
kre-sod
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 16
Записей в блоге: 9
05.04.2014, 22:25     Логическое и #1
Это ведь && ? Тогда можете объяснить, в чем разница? пояснение после кода (весь привел на всякий случай)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include "../../std_lib_facilities.h"
 
int _tmain(int argc, _TCHAR* argv[])
{
    vector<string> words;
    string temp;
    string disliked = "Broccoli";
    string dis = "BLEEP";
    cout << "Vvedite slova (Broccoli - nezelatelnoe slovo!):\n";
    while (cin>>temp)
        words.push_back(temp);
    cout << "Kolocestvo slov: " << words.size() << endl;
    sort(words.begin(), words.end());
    for (int i=0; i<words.size(); ++i)
        if (i==0 || words [i-1] != words[i] && words[i] == disliked)
            cout << dis <<'\n';
        else if (i==0 || words[i-1] != words[i] && words[i] != disliked)
            cout << words[i] << '\n';
    system("pause");
    return 0;
}
В чем разница между
C++
1
2
3
4
if (i==0 || words [i-1] != words[i] && words[i] == disliked)
            cout << dis <<'\n';
        else if (i==0 || words[i-1] != words[i] && words[i] != disliked)
            cout << words[i] << '\n';
и
C++
1
2
3
4
5
6
if (i==0 || words [i-1] != words[i])
            if (words[i] == disliked)
            cout << dis <<'\n';
        else if (i==0 || words[i-1] != words[i])
            if (words[i] != disliked)
            cout << words[i] << '\n';
?
Работает только второй вариант. Если делаю первый, то выдает кучу ошибок. И как тогда пользоваться && ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.04.2014, 22:25     Логическое и
Посмотрите здесь:

Логическое задание на С++ C++
C++ выполняет логическое умножение
C++ логическое выражение
Логическое выражение C++
C++ ЛВ(ЛОГИЧЕСКОЕ ВРОЖЕНИЯ)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,039
05.04.2014, 22:34     Логическое и #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от kre-sod Посмотреть сообщение
Работает только второй вариант. Если делаю первый, то выдает кучу ошибок.
вторая запись не идентична первой
посмотри например к чему относится else

Добавлено через 1 минуту
да и скобки расставь
IrineK
Заблокирован
05.04.2014, 22:46     Логическое и #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Приоритет операций

Равно / не равно выполняется раньше, чем логические И / ИЛИ
Поэтому нужны скобки.
Blueeyer
12 / 12 / 1
Регистрация: 09.10.2013
Сообщений: 220
06.04.2014, 02:13     Логическое и #4
а проще так, мне кажется:
C++
1
2
3
4
5
6
7
if ((i == 0) || (words[i-1] != words[i])){
    if (words[i] == disliked){
    cout << dis << endl;
    } else {
    cout << words[i] << endl;
    }
}
Yandex
Объявления
06.04.2014, 02:13     Логическое и
Ответ Создать тему
Опции темы

Текущее время: 17:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru