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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
#1

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

09.07.2015, 19:20. Просмотров 645. Ответов 25
Метки нет (Все метки)

Добрый день, не работает "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"
Посмотрите здесь:

Оператор "если" не работает - C++
#include &lt;windows.h&gt; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;locale.h&gt; #include &lt;fstream&gt; #include &lt;iostream&gt; #include...

Сдающий карты. "cards_remaining--" одинаково работает и с "--", и без - C++
Всем привет, возник вопрос по поводу программы &quot;сдающий карты&quot;, программа с книги &quot;С++ без страха&quot;, автора не помню, не столь важно) Вот...

Не работает "setlocale( LC_ALL,"Russian" )" - C++
В одной программе setlocale( LC_ALL,&quot;Russian&quot; ) работает, а в другой, ничем не отличающейся от первой, нет. В чем дело?

"Отсутствует оператор >> соответствующий этим операндам" - в чем ошибка? - C++
в книге приводится пример. main (){ string a=&quot; &quot;; string b; while (cin&gt;&gt;b) { if (a==b){ cout&lt;&lt;&quot;Повторяющееся слово...

Не компилируется, ошибки: "отсутствует оператор, соответствующий этим операндам" - C++
Помогите исправить ошибку, данные проект создавался в среде eclipse при переносе на VS 2010 стал выдавать ошибки при компиляции. Исправьте...

Ошибка "%: недопустимо, правый оператор имеет тип double" - C++
int _tmain(int argc, _TCHAR* argv) { setlocale( LC_ALL,&quot;Russian&quot; ); double a, b, e, q1, q2; int c, d, p1, p2; int k=0; ...

Ошибка: отсутствует оператор "<<", соответствующий этим операндам - C++
#include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; struct Student //объявляем...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
09.07.2015, 20:09  [ТС]     Не работает оператор "else" #16
Цитата Сообщение от ValeryS Посмотреть сообщение
в результате YES не выведется, сразу на выход функции
Да, сразу на выход идёт, только почему, я так и не понял.

Добавлено через 46 секунд
Я думал, что после if должно выполняться else if

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
if (b1 + b2 >= K)
    {
        if (a1 + a2 <= W)
        {
            cout << "YES" << endl;
        }
    }
    else if (b1 + b3 >= K)
    {
        if (a1 + a3 <= W)
        {
            cout << "YES" << endl;
        }
EugeneQ
1 / 1 / 0
Регистрация: 20.06.2014
Сообщений: 47
09.07.2015, 20:11     Не работает оператор "else" #17
Цитата Сообщение от Melvil Посмотреть сообщение
Да, сразу на выход идёт, только почему, я так и не понял.
В main() cin.get в конце.

Цитата Сообщение от Melvil Посмотреть сообщение
Я думал, что после if должно выполняться else if
не должно
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
09.07.2015, 20:12  [ТС]     Не работает оператор "else" #18
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
В чем вообще задача ? Как зайти в else ?
Вот, но там уже чуть-чуть осталось
Кликните здесь для просмотра всего текста
Гена собирается на туристический слет учеников своей школы. В своем классе он был назначен ответственным за палатки. У себя дома он нашел 3 палатки: первая из них весит a1 килограмм и вмещает b1 человек, вторая весит a2 килограмм и вмещает b2 человек, третья весит a3 килограмм и вмещает b3 человек.

В классе Гены K человек. Выясните, может ли он выбрать палатки так, чтобы в них все могли поместиться. При этом учитывайте, что выбранные палатки должны суммарно весить не более W килограмм.

Входные данные

Первая строка входного файла INPUT.TXT содержит два целых числа: K и W (1 <= K <= 15, 1 <= W <= 30). Вторая строка содержит шесть целых чисел: a1, b1, a2, b2, a3, b3 (1 <= a1, a2, a3 <= 10, 1 <= b1, b2, b3 <= 15).

Выходные данные

В выходной файл OUTPUT.TXT выведите YES, если палатки указанным образом выбрать можно, и NO в противном случае.


Добавлено через 57 секунд
Как собственно сделать, чтобы все else if выполнялись ?
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,080
Завершенные тесты: 2
09.07.2015, 20:17     Не работает оператор "else" #19
Цитата Сообщение от Melvil Посмотреть сообщение
Как собственно сделать, чтобы все else if выполнялись ?
Замените else if на if. Тогда у вас будет проверять все условия.

Добавлено через 2 минуты
Вот так. Надеюсь я вас правильно понял.
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
if (b1 + b2 >= K)
{
    if (a1 + a2 <= W)
    {
        cout << "YES" << endl;
    }
}
 
if (b1 + b3 >= K)
{
    if (a1 + a3 <= W)
    {
        cout << "YES" << endl;
    }
}
    
if (b2 + b3 >= K)
{
    if (a2 + a3 <= W)
    {
        cout << "YES" << endl;
    }
}
 
if (b1 + b2 + b3 >= K)
{
    if (a1 + a2 + a3 <= W)
    {
        cout << "YES" << endl;
    }
}
Melvil
47 / 46 / 13
Регистрация: 20.05.2015
Сообщений: 251
09.07.2015, 20:18  [ТС]     Не работает оператор "else" #20
Цитата Сообщение от Sn1p3rOk Посмотреть сообщение
Вот так. Надеюсь я вас правильно понял.
Да, спасибо, я правда сделал немножко по-другому, но тесты не проходит, пойду создам тему.

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
#include <iostream>
using namespace std;
int K, W, a1, b1, a2, b2, a3, b3;
void check()
{
    if (b1 + b2 >= K && a1 + a2 <= W)
    {
            cout << "YES" << endl;
            exit(0);
    }
    else if (b1 + b3 >= K && a1 + a3 <= W)
    {
            cout << "YES" << endl;
            exit(0);
    }
    else if (b2 + b3 >= K && a2 + a3 <= W)
    {   
            cout << "YES" << endl;
            exit(0);
    }
    else if (b1 + b2 + b3 >= K && a1 + a2 + a3 <= W)
    {   
            cout << "YES" << endl;
            exit(0);
    }
}
int main()
{
    cin >> K >> W;
    cin >> a1 >> b1 >> a2 >> b2 >> a3 >> b3;
    if (b1 + b2 + b3 >= K)
    {
        check();
    }
        cout << "NO" << endl;
        return 0;
}
Sn1p3rOk
281 / 168 / 66
Регистрация: 19.04.2014
Сообщений: 1,080
Завершенные тесты: 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
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
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"
Еще ссылки по теме:

Ошибка: отсутствует оператор "==", соответствующий этим операндам - C++
в чем ошибка? Может #include не хватает, но вроде все на месте. #include &quot;stdafx.h&quot; #include &lt;fstream&gt; #include &lt;iostream&gt; ...

Почему конструктор и "оператор =" не могут быть виртуальными? - C++
Добрый вечер, какое аргументированое объяснение: &quot;почему конструктор и оператор=&quot; не могут быть виртуальными?

Показать все четные числа столько, сколько выполняет оператор "for" - C++
здравствуйте подскажите пожалуйста как мне сделать чтобы показать все четные числа столько сколко выполнает оператор &quot;for&quot; #include...

Массив: Подсчет матрицы 3x3 по средствам класса используя оператор ">>" - C++
Здравствуйте! Помогите плз разобраться... У меня было задание в универе создать прогу подсчета матрицы 3x3 по средствам класса используя...

Условный оператор (определить есть ли во втором символе строки символ "-") - C++
Народ выручите! вот такой код. выдаёт ошибки. как определить есть ли во втором символе строки символ &quot;-&quot;??? #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,733
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"
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru