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

Найти ошибку в программе нахождения заданного выражения

25.08.2017, 22:16. Показов 1154. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
если написать 2 в консоли, пишет "Ни одно выражение не равно 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
#include<iostream>
#include <Windows.h>
 
 
using namespace std;
 
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
 
    double a, b, c, d, e, f, g;
    cin >> a;
    cin >> b;
    cin >> c;
    cin >> d;
    cin >> e;
    cin >> f;
    cin >> g;
    if ((a || b || c || d || e || f||g) == 2)
        cout << "какое-либо выражение равно 2-м\n";
    else
        cout << "ни одно выражение не равно 2-м\n";
    
 
 
            system("pause");
                     return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2017, 22:16
Ответы с готовыми решениями:

Найти ошибку в программе нахождения факториала через сложение
Написал программу для нахождения факториала через сложение чисел, но при вводе 3 выдаёт 8, а не 6....

Помогите найти ошибку в программе нахождения остатка от деления на 12
Здравствуйте. Помогите пожалуйста найти ошибку в данной программе. #include&lt;iostream.h&gt;...

Найти ошибку в программе нахождения числа с обратным расположением цифр
Можете подсказать что исправить , что бы возвратить число с обратным расположением цифр. ...

Найти ошибку в программе нахождения числа с обратным расположением цифр
Можете подсказать что исправить или заменить , что бы возвратить число с обратным расположением...

9
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
25.08.2017, 22:19 2
Лучший ответ Сообщение было отмечено kotofeykar как решение

Решение

Цитата Сообщение от kotofeykar Посмотреть сообщение
C++
1
if ((a || b || c || d || e || f||g) == 2)
Каждую переменную нужно сравнивать с 2.
1
0 / 0 / 0
Регистрация: 20.08.2017
Сообщений: 26
26.08.2017, 01:13  [ТС] 3
Цитата Сообщение от nd2 Посмотреть сообщение
Каждую переменную нужно сравнивать с 2.
спасибо, не знал
0
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
26.08.2017, 09:18 4
Цитата Сообщение от nd2 Посмотреть сообщение
Каждую переменную нужно сравнивать с 2.
ну это не точно...

Добавлено через 10 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
int main() {
    constexpr int a = 0, b = 2, c = 4, d = 7;
    
    switch(2) {
        case a:
        case b:
        case c:
        case d:
    cout << "какое-либо выражение равно 2-м" << endl;
    break;
    
        default:
    cout << "ни одно выражение не равно 2-м" << endl;
    break;
    }
    
    return 0;
}
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
26.08.2017, 09:23 5
C++
1
constexpr ...
Жулик :-) В оригинале были переменные из std::cin.
1
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
26.08.2017, 09:39 6
Цитата Сообщение от bormant Посмотреть сообщение
Жулик :-) В оригинале были переменные из std::cin.
чёт попробовал поколдовать с cin + const -- ничего не вышло

https://stackoverflow.com/ques... t-variable

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
#include <iostream>
using namespace std;
 
int main() {
    int _a, _b, _c, _d;
    cin >> _a >> _b >> _c >> _d;
    
    const int a(_a);
    const int b(_b);
    const int c(_c);
    const int d(_d);
 
    switch(2) {
        case a:
        case b:
        case c:
        case d:
            cout << "какое-либо выражение равно 2-м" << endl;
            break;
 
        default:
            cout << "ни одно выражение не равно 2-м" << endl;
            break;
    }
 
    return 0;
}
Добавлено через 28 секунд
хотя в вижуалке это прокатило бы вроде
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
26.08.2017, 09:46 7
А всего-то и нужно было почитать, что такое switch, зачем он в языке появился...
a, b, c, d не известны на этапе компиляции, поэтому положить их значения на этапе компиляции в таблицу переходов невозможно. Достаточно использовать инструмент по назначению, а не натягивать сову на глобус :-)

Добавлено через 1 минуту
Если вдруг какой-то компилятор умеет превращать switch в серию if, это не повод не использовать if.
1
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
26.08.2017, 11:41 8
Цитата Сообщение от bormant Посмотреть сообщение
А всего-то и нужно было почитать, что такое switch, зачем он в языке появился...
слишком сложно, я не читаю книги и мануалы. а код придумываю сам.

Добавлено через 2 минуты
и да, было бы не плохо, если бы вы объяснили зачем switch-case появился
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7771 / 4600 / 2824
Регистрация: 22.11.2013
Сообщений: 13,080
Записей в блоге: 1
26.08.2017, 14:08 9
Цитата Сообщение от dailydose Посмотреть сообщение
код придумываю сам
Придумайте как заменять фрагменты вроде такого (проблема в том, что многочисленные проверки отнимают много времени):
C
1
2
3
4
5
6
7
  int sw;
  ...
  if      (0==sw) func0();
  else if (1==sw) func1();
  else if (2==sw) func2();
  else if (3==sw) func3();
  else if (4==sw) func4();
подсказка
все же, пока лучше самому...
создать массив с адресами функций, брать адрес из таблицы по смещению sw:
C++
1
2
3
4
  void (*f)[5] = {func0, func1, func2, func3, func4};
  int sw;
  ...
  f[sw]();
1
671 / 217 / 88
Регистрация: 21.07.2016
Сообщений: 1,036
Записей в блоге: 2
26.08.2017, 16:36 10
Цитата Сообщение от bormant Посмотреть сообщение
void (*f)[5] = {func0, func1, func2, func3, func4};
* int sw;
* ...
* f[sw]();
очень хитро, собственно ровно так и делал год назад

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    // Array of check functions
    static int(Board::*checks[])(int) const =
    {
        &Board::CheckAntiDiagonal,
        &Board::CheckDiagonal,
        &Board::CheckVertical,
        &Board::CheckHorizontal
    };
 
    // Calling each check function
    for (int i = 0; i < 4; i++)
    {
        state = CheckWin(checks[i]);
        if (state == STATE_X_WINNER || state == STATE_O_WINNER)
            return state;
    }
Добавлено через 1 минуту
ну или почти так

Добавлено через 2 минуты
Цитата Сообщение от bormant Посмотреть сообщение
проблема в том, что многочисленные проверки отнимают много времени):
мы, джаваскриптёры привыкли принебрегать памятью и ухищрениями ради выгоды в несколько милисекунд
0
26.08.2017, 16:36
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2017, 16:36
Помогаю со студенческими работами здесь

Опишите процесс вычисления выражения заданного выражения 3 + 2 * x -0,5 – 4 / x. Обраб отайте ошибку извлечения квадратного корня из отрицательного
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string&gt;...

Написать код нахождения предела заданного выражения
найти предел последовательности lim (n*n*n+5)/(2*n*n*n+n*n+1) ...

Найти ошибку в программе: в visual studio выдает ошибку
#include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int main() ...

Помогите найти ошибки в программе нахождения особого элемента
Помогите пожалуйста с массивом и функцией разобраться include &lt;iostream&gt; using namespace std; /*...


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

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