1
#include "stdafx.h"
#include <iostream>
using namespace std; 
void Plus(){
int long a,b;
cout << "Введите первое число: ";
cin >> a;
cout << "Введите второе число: ";
cin >> b;
cout << "Ваш ответ: " << a + b << endl;
 }
 void Minus(){
int long a, b;
cout << "Введите первое число: ";
cin >> a;
cout << "Введите второе число: ";
cin >> b;
cout << "Ваш ответ: " << a - b << endl;
 }
 void Ymnojit(){
int long a, b;
cout << "Введите первое число: ";
cin >> a;
cout << "Введите второе число: ";
cin >> b;
cout << "Ваш ответ: " << a * b << endl;
}
 void Podelit(){
int long a, b;
cout << "Введите первое число: ";
cin >> a;
cout << "Введите второе число: ";
cin >> b;
cout << "Ваш ответ: " << a / b << endl;
  }
    int main(){
       setlocale(LC_ALL, "Russian");
       int a;
       cout << "Режим:" << endl;
       cin >> a;
       if (a == 1){
         Plus();
} if (a == 2){
    Minus();
} if (a == 3){
    Ymnojit();
} if (a == 4){
    Podelit();
}
system("pause");
return 0;
  }

setlocale(LC_ALL, "Russian"); - не помогает.

BigTows
  • 1,058
BigTows
  • 19
  • Скорее всего шрифт в консоли менять надо. – smackmychi Oct 31 '14 at 18:14
  • 3
    Самый надежный способ - убрать setlocale и перейти на линукс. Там это проблемы нет "из коробки". – KoVadim Oct 31 '14 at 19:45
  • 4
    @KoVadim: Ну ладно уж вам. Вы ведь на вопрос «как починить забор» не отвечаете «надо менять страну, там все заборы в порядке»? – VladD Oct 31 '14 at 20:19
  • 2
    @KoVadim ну это огонь вообще. – NMD Oct 31 '14 at 20:25
  • @gasfull: system("chcp 1251"); пробовали? – VladD Oct 31 '14 at 20:30
  • @VladD не помогает. – BigTows Oct 31 '14 at 20:34
  • @gasfull: А что именно происходит, вы предлагаете нам самим догадаться? Попробуйте вот это, и будьте добры рассказать, что именно происходит, если говорите «не работает». – VladD Oct 31 '14 at 20:42
  • @gasfull, Если вам дан исчерпывающий ответ, отметьте его как верный (нажмите на галку рядом с выбранным ответом). – Виталина Nov 01 '14 at 10:37

3 Answers3

1

Тут подобные вопросы обсуждались много-много-... раз.

Попробуйте набрать в гугле:

site:hashcode.ru C++ windows русский язык кракозябры

и почитать, например, здесь.

--

А @KoVadim прав. Не стоит учиться программированию на C/C++ в винде (а может, и вообще не стоит уже на нее время тратить).

avp
  • 46,098
  • 6
  • 48
  • 116
  • Вопрос этот задают часто и также часто дают ответы, которые не работают в том или ином случае. Вот классика жанра про Виндовую консоль и Юникод. Если ссылка не работает: https://web.archive.org/web/20111005003105/http://blogs.msdn.com/b/michkap/archive/2010/10/07/10072032.aspx – jfs Nov 02 '14 at 13:48
  • @avp > Не стоит учиться программированию на C/C++ в винде , откуда такое предвзятое отношение? – perfect Aug 25 '16 at 07:16
  • @perfect, просто *nix внутренне прост и красив, в отличии от эклектичной, набитой всяким хламом и уже изначально скованной (посмотрите хотя бы на разделитель в пути к файлу (\\)) совместимостью с прошлым виндой. А уж про разные кодировки русского в консольном вводе и файлах (а также аргументах командной строки (вводимых же с клавиатуры !!!)) я просто молчу. – avp Aug 25 '16 at 10:33
  • @avp , ясно , я вообще на ситуацию с ОС смотрю с точки зрения кроссплатформености , но предпочитаю продукты из коробки , так как они позволяют сосредоточится над тем что необходимо именно сейчас не отвлекаясь на освоение реализации всей системы в совокупности и особенности работы с ней. – perfect Aug 25 '16 at 10:41
1
system("chcp 1251");  

Мне это помогает, самый простой и удобный вариант если вы учитесь.

setlocale(LC_ALL, "Russian"); - можно в данном случае не использовать.

Единственно, в консоли будет лишняя информация такого рода: "Текущая кодовая страница: 1251"

Дальше, когда углубитесь, будут и другие решения, более сложные, универсальные.

Nicolas Chabanovsky
  • 51,426
  • 87
  • 267
  • 507
0

используйте функции:

SetConsoleCP(1251);// установка кодовой страницы win-cp 1251 в поток ввода
SetConsoleOutputCP(1251); // установка кодовой страницы win-cp 1251 в поток вывода

подробнее здесь

perfect
  • 10,021