D
D
Denis Akhunov2020-10-09 08:23:40
C++ / C#
Denis Akhunov, 2020-10-09 08:23:40

Why don't Russian characters work in case?

I am programming in C++ in the Visual Studio environment and faced such a problem that case only works with English characters, and if you put Russian characters instead, it gives errors 5f7ff424d0e63479583370.png
. Code in Russian:

#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;
}


Code in English
#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;
}

Answer the question

In order to leave comments, you need to log in

2 answer(s)
V
Vladimir Korotenko, 2020-10-09
@denywho

https://ru.wikipedia.org/wiki/CP866
https://ru.wikipedia.org/wiki/Windows-1251
https://ru.wikipedia.org/wiki/UTF-8
Have a great weekend

D
Dmitry Pavlov, 2020-10-10
@Stalker31

Try to set the required characters through a hex sequence

char c='\122';//значение символа в шестнадцетиричном виде

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question