@denywho
Начинающий программист

Почему в case не работают русские символы?

Программирую на C++ в среде Visual Studio и сталкнулся с такой проблемой, что case работает лишь с английскими символами, а если вместо них поставить русские символы то выдаёт ошибки 5f7ff424d0e63479583370.png
Код на русском языке:
#include <iostream>
using namespace std;
int main()

//  Робот может перемещаться в четырех направлениях ("С" — север, "З" — запад, "Ю" — юг, "В" — восток) и принимать три цифровые команды: 
//  0 — продолжать движение, 1 — поворот налево, –1 — поворот направо. 
//  Дан символ X — исходное направление робота и число N — посланная ему команда. Вывести направление робота после выполнения полученной команды.

{
    setlocale(LC_ALL, "Russia");
    char x;
    int n;
    cout << "Введите исходное направление робота\n( 'С' - север, 'З' - запад, 'Ю' - юг, 'В' - восток ) " << endl;
    cin >> x;
    cout << "Введите команду для робота\n( 0 - продолжать движение, 1 - поворот налево, -1 - поворот направо )" << endl;
    cin >> n;
    if (n > -2 && n < 2)
    {
        if (n == -1)
        {
            switch (x)
            {
            case 'С': x = 'В'; cout << "Направление: " << x << endl; break;
            case 'З': x = 'С'; cout << "Направление: " << x << endl; break;
            case 'Ю': x = 'З'; cout << "Направление: " << x << endl; break;
            case 'В': x = 'Ю'; cout << "Направление: " << x << endl; break;
            }
        }
        if (n == 1)
        {
            switch (x)
            {
            case 'С': x = 'З'; cout << "Направление: " << x << endl; break;
            case 'З': x = 'Ю'; cout << "Направление: " << x << endl; break;
            case 'Ю': x = 'В'; cout << "Направление: " << x << endl; break;
            case 'В': x = 'С'; cout << "Направление: " << x << endl; break;
            }
        }
        if (n == 0)
        {
            switch (x)
            {
            case 'С': x = 'С'; cout << "Направление: " << x << endl; break;
            case 'З': x = 'З'; cout << "Направление: " << x << endl; break;
            case 'Ю': x = 'Ю'; cout << "Направление: " << x << endl; break;
            case 'В': x = 'В'; cout << "Направление: " << x << endl; break;
            }
        }
    }
    else cout << "Вы ввели неверную команду" << endl;
    return 0;
}


Код на английском
#include <iostream>
using namespace std;
int main()

//  Робот может перемещаться в четырех направлениях ("С" — север, "З" — запад, "Ю" — юг, "В" — восток) и принимать три цифровые команды: 
//  0 — продолжать движение, 1 — поворот налево, –1 — поворот направо. 
//  Дан символ X — исходное направление робота и число N — посланная ему команда. Вывести направление робота после выполнения полученной команды.

{
    setlocale(LC_ALL,"Russia");
    char x;
    int n;
    cout << "Введите исходное направление робота\n( 'N' - север, 'W' - запад, 'S' - юг, 'E' - восток ) " << endl;
    cin >> x;
    cout << "Введите команду для робота\n( 0 - продолжать движение, 1 - поворот налево, -1 - поворот направо )" << endl;
    cin >> n;
    if ( n > -2 && n < 2)
    {
    if ( n == -1 )
    {
        switch (x)
        {
            case 'N': x = 'E'; cout << "Направление: " << x << endl;break;
            case 'W': x = 'N'; cout << "Направление: " << x << endl;break;
            case 'S': x = 'W'; cout << "Направление: " << x << endl;break;
            case 'E': x = 'S'; cout << "Направление: " << x << endl;break;
        }
    }
    if ( n == 1 )
    {
        switch (x)
        {
            case 'N': x = 'W'; cout << "Направление: " << x << endl;break;
            case 'W': x = 'S'; cout << "Направление: " << x << endl;break;
            case 'S': x = 'E'; cout << "Направление: " << x << endl;break;
            case 'E': x = 'N'; cout << "Направление: " << x << endl;break;
        }
    }
    if ( n == 0)
    {
        switch (x)
        {
            case 'N': x = 'N'; cout << "Направление: " << x << endl;break;
            case 'W': x = 'W'; cout << "Направление: " << x << endl;break;
            case 'S': x = 'S'; cout << "Направление: " << x << endl;break;
            case 'E': x = 'E'; cout << "Направление: " << x << endl;break;
        }
    }
    }
    else cout << "Вы ввели неверную команду" << endl;
    return 0;
}
  • Вопрос задан
  • 556 просмотров
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Пригласить эксперта
Ответы на вопрос 1
Попробуйте задать необходимые символы через шестнадцетиричную последовательность
char c='\122';//значение символа в шестнадцетиричном виде
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 03:54
1500 руб./за проект
22 нояб. 2024, в 02:56
10000 руб./за проект
22 нояб. 2024, в 00:55
500 руб./за проект