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

Не работает оператор "else" - C++

Восстановить пароль Регистрация
 
 
Melvil
 Аватар для Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 246
09.07.2015, 19:20     Не работает оператор "else" #1
Добрый день, не работает "else" в функции main . В чём проблема?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <iostream>
using namespace std;
int K, W, a1, b1, a2, b2, a3, b3;
void check()
{
    if (b1 + b2 >= K)
    {
        if (a1 + a2 <= W)
        {
            cout << "YES" << endl;
        }
    }
    else if (b1 + b3 >= K)
    {
        if (a1 + a3 <= W)
        {
            cout << "YES" << endl;
        }
    }
    else if (b2 + b3 >= K)
    {
        if (a2 + a3 <= W)
        {
            cout << "YES" << endl;
        }
    }
    else if (b1 + b2 + b3 >= K)
    {
        if (a1 + a2 + a3 <= W)
        {
            cout << "YES" << endl;
        }
    }
}
void main()
{
    cin >> K >> W;
    cin >> a1 >> b1 >> a2 >> b2 >> a3 >> b3;
    if (b1 + b2 + b3 >= K)
    {
        check();
    }
    else
    {
        cout << "NO" << endl;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2015, 19:20     Не работает оператор "else"
Посмотрите здесь:

error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::basic_istream<_Elem,_Traits>" C++
C++ Исправить ошибку:error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream"
C++ Сдающий карты. "cards_remaining--" одинаково работает и с "--", и без
C++ Error C2678: бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream"
Error C2678: бинарный "<<": не найден оператор, принимающий левый операнд типа "std::ifstream" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sn1p3rOk
 Аватар для Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,078
Завершенные тесты: 2
09.07.2015, 20:24     Не работает оператор "else" #21
Цитата Сообщение от Melvil Посмотреть сообщение
но тесты не проходит
Какие тесты ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrunkProgrammer
37 / 27 / 6
Регистрация: 09.06.2015
Сообщений: 100
10.07.2015, 06:55     Не работает оператор "else" #22
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Вообще-то они по умолчанию равны нулю.
Вообще не факт. Это очень сильно зависит от компилятора. И правила хорошего кода гласят: не должно быть неинициализированных переменных, не должно быть глобальных переменных, не должно быть дефайнов.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
10.07.2015, 09:27     Не работает оператор "else" #23
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
Вообще не факт. Это очень сильно зависит от компилятора.
вообще то это факт
глобальные переменные обнуляются автоматически, загляни в стандарт
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
И правила хорошего кода гласят:
что нужно знать инструмент, которым работаешь
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
не должно быть неинициализированных переменных, не должно быть глобальных переменных, не должно быть дефайнов.
можно узнать откуда эти правила?
А то уж больно на религию смахивает
DrunkProgrammer
37 / 27 / 6
Регистрация: 09.06.2015
Сообщений: 100
10.07.2015, 11:15     Не работает оператор "else" #24
Цитата Сообщение от ValeryS Посмотреть сообщение
можно узнать откуда эти правила?
А то уж больно на религию смахивает
Скотт Мейерс. Эффективное использование С++. Правило 1.
proont
1 / 1 / 1
Регистрация: 15.11.2014
Сообщений: 79
10.07.2015, 12:22     Не работает оператор "else" #25
У вас все правильно работает. Если условие в main() выполнилось, то вызывается функция check(). Если в функции check() какое-то условие выполнилось, то на экран будет выведено YES и программа пойдет выполняться дальше, с того момента, где вызвана функция check(). If выполнилось, поэтому else не выполняется. Если же main() выполнилось условие, а в chek() ни одно из условий не выполнилось, то программа выполняется дальше с того момента, где вызвана функция check(). Опять If выполнилось, поэтому else не выполняется.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.07.2015, 16:48     Не работает оператор "else"
Еще ссылки по теме:

Оператор "delete" и ошибка "_BLOCK_TYPE_IS_VALID(pHead->nBlockUse) Error" C++
Бинарный ">>": не найден оператор, принимающий левый операнд типа "std::istream" C++
Патерн "прототип" не работает, выдаёт ошибку "недопустимый вызов нестатической ф-ции", где я в коде ошибка? C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
10.07.2015, 16:48     Не работает оператор "else" #26
и что так и написано
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
не должно быть дефайнов.
покажи пример как можно без дефайнов провести условную компиляцию
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
не должно быть глобальных переменных,
могу привести кучу примеров где глобальные переменные упрощают код
например многопоточное обращение к одной области данных
статическая переменная кстати, веет себя как глобальная
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
не должно быть неинициализированных переменных,
C++
1
2
int a;
cin>>a;
и накой здесь инициализация?
Цитата Сообщение от DrunkProgrammer Посмотреть сообщение
Скотт Мейерс. Эффективное использование С++. Правило 1.
вообще то указывают или полные выходные данные, или ссылку
и неплохо бы цитату привести
Yandex
Объявления
10.07.2015, 16:48     Не работает оператор "else"
Ответ Создать тему
Опции темы

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