0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 2
1

Visual Studio 2019 ругается на кейсы

19.11.2020, 18:31. Показов 1382. Ответов 5

Author24 — интернет-сервис помощи студентам
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
int TransformOperationChar(char OperationChar)
{
    switch (OperationChar)
    {
    case ('1' || '+'):
        if (OperationChar == '1') {OperationChar = '+'; return OperationChar;}
        else if (OperationChar == '+') {return OperationChar;}
        else { cout << "Unexpected TransformationOperationChar Error" << endl;}
        break;
    case ('2' || '-'):
        if (OperationChar == '2') {OperationChar = '-'; return OperationChar;}
        else if (OperationChar == '-') {return OperationChar;}
        else {cout << "Unexpected TransformationOperationChar Error" << endl;}
        break;
    case ('3' || '*'):
        if (OperationChar == '3') { OperationChar = '*'; return OperationChar; }
        else if (OperationChar == '-') { return OperationChar; }
        else { cout << "Unexpected TransformationOperationChar Error" << endl; }
        break;
    case ('4' || '/'):
        if (OperationChar == '4') { OperationChar = '/'; return OperationChar; }
        else if (OperationChar == '-') { return OperationChar; }
        else { cout << "Unexpected TransformationOperationChar Error" << endl; }
        break;
    default:
        cout << "Input TransformationOperationChar Error" << endl;
        break;
    }
}
VS ругается с кодом ошибки E1578, мол значение метки случая уже есть в данном переключателе. Сверил Синтаксис с примером всё вроде норм, а VS ругается
Синтаксис:
C++
1
2
3
4
5
6
7
8
9
10
11
12
switch ( <переменная> ) {
case значение1:
  Выполнить если <переменная> == значение1
  break;
case значение2:
  Выполнить если <переменная> == значение2
  break;
...
default:
  выполнить, если ни один вариант не подошел
  break;
}
Извините если очень простая ошибка, я просто в танке первый день. И хотелось бы узнать правильно ли я задал функцию
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.11.2020, 18:31
Ответы с готовыми решениями:

программа ругается что нет парного if для else и для предпоследнего else требуется оператор visual studio 2019
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;math.h&gt; #include &lt;cstdlib&gt; int main() {...

Ошибка в visual studio 2019
Не пойму в чем ошибка. При попытке создать &quot;a&quot; выдает такую ошибку: идентификатор &quot;university&quot; не...

Проблема с Visual Studio 2019
Здравствуйте. Хочу создать консольное приложение в VS 2019. Но возникает следующего рода проблема...

Проблема в Visual Studio 2019
Добрый вечер. Установил Visual Studio 2019. Поставил следующие галочки: Разработка классических...

5
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,806
19.11.2020, 18:32 2
Нельзя использовать выражения в case. Нужны константы уже вычисленные.
1
0 / 0 / 0
Регистрация: 19.11.2020
Сообщений: 2
19.11.2020, 18:34  [ТС] 3
Логические выражения?
Если да, то мне через условия делать?
0
Эксперт .NET
6507 / 4084 / 1605
Регистрация: 09.05.2015
Сообщений: 9,548
19.11.2020, 18:37 4
C++
1
2
3
4
case '1':
case '+':
  // ???
  break;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int TransformOperationChar(char OperationChar)
{
    switch (OperationChar)
    {
        case '1': return '+';
        case '+': return OperationChar;
        case '2': return '-';
        case '-': return OperationChar;
        case '3': return '*';
        case '*': return OperationChar;
        case '4': return '/';
        case '/': return OperationChar;
        default:
            cout << "Unexpected TransformationOperationChar Error" << endl;
            break;
    }
}
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
19.11.2020, 18:38 5
Ax1SL, напишите что должен делать каждый case
0
19405 / 10024 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
19.11.2020, 20:39 6
Цитата Сообщение от Nishen Посмотреть сообщение
Нельзя использовать выражения в case.
Конечно можно, если они константные.
Вопрос тут в том, что является результатом. Так вот, у ТС результатом является bool, т.е. на самом деле его switch-case выглядит так (после вычисления выражений):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    switch (OperationChar)
    {
    case true:
...
    case true:
...
    case true:
...
    case true:
...
    default:
        cout << "Input TransformationOperationChar Error" << endl;
        break;
    }
}
И теперь ТС должно быть понятно откуда ошибка "значение метки случая уже есть в данном переключателе".

Вот как ни странно, ТС сверял синтаксис и синтаксис у него был верный, но все равно умудрился накосячить
1
19.11.2020, 20:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.11.2020, 20:39
Помогаю со студенческими работами здесь

Отладчик Visual Studio 2019 C++
Небольшая проблема, не могу нормально настроить отладчик. Вообще он очень коряво проверяет код, а...

Ошибка в visual studio 2019
вот создал классическое приложение c++ обычный код: #include &lt;iostream&gt; using namespace std; int...

Visual Studio 2019 и библиотека FLTK
Читаю я книгу Stroustrup B. / Страуструп Б. - Программирование. Принципы и практика с...

Нужно материал по С++visual studio 2019
Здравствуйте, подскажите пожалуйста где можно посмотреть и почитать материалы по С++visual studio...

Visual Studio 2019, подключение библиотек
Добрый день! Я начинающий программист, учу c++, заинтересовался библиотекой sfml, но ни как не...

Работа в microsoft visual studio 2019
ребята подскажите, как вызвать редактор для с++ (редактор кода) в программе у меня не получается....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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