Программирую на C++ в среде Visual Studio и сталкнулся с такой проблемой, что case работает лишь с английскими символами, а если вместо них поставить русские символы то выдаёт ошибки
Код на русском языке:
#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;
}