Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
#1

Русификация вывода - C++

10.03.2014, 21:34. Просмотров 1662. Ответов 11
Метки нет (Все метки)

Доброго времени суток. Написал такую программу:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
using namespace std;
#include "calculateModule.h"
int main() {
    setlocale(LC_ALL, "RUS");
    int COD;
    int calcCOD;
    double integ1;
    double integ2;
    string PIN;
    CalcMod iCalcMod;
    cout << "Введите PIN: ";
    getline(cin, PIN);
        if(PIN == "1004598PIN") {
            cout << setw(40) << "Welcome!" << endl;
            cout << "Введите код операции.\n " << "Для калькулятора - 1"
            << "\nДля выхода введите -1\n" << "КОД: ";
            cin >> COD;
            while(COD != -1) {
                if(COD == 1) {
                    cout << "Вы в калькуляторе!" << "\nВведите тип операции." << "\nДля унарных операций - 1"
                    << "\nДля бинарных операций - 2" << "\nДля выхода в главное меню введите -1\n" << "КОД: ";
                    cin >> calcCOD;
                    while(calcCOD != -1) {
                    
                        if(calcCOD == 1) {
                            ;
                            }
                        if(calcCOD == 2) {
                            cout << "Введите числа: ";
                            cin >> integ1 >> integ2;
                            iCalcMod.setIntegers(integ1, integ2);
                            iCalcMod.binarOperations();
                                }
                        if(calcCOD == -1) {
                            ;
                            }
                        cout << "Вы в калькуляторе!" << "\nВведите тип операции." << "\nДля унарных операций - 1"
                        << "\nДля бинарных операций - 2" << "\nДля выхода в главное меню введите -1\n" << "КОД: ";
                        cin >> calcCOD;
                }
            }
            cout << "Введите код операции.\n " << "Для калькулятора - 1" << "\nДля рисования - 2"
            << "\nДля выхода введите -1\n" << "КОД: ";
            cin >> COD;
        }
    }
    return 0;
}
.cpp файл, и

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//Класс-калькулятор
//---------------------------------------------------------------------
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
class CalcMod {
public:
    void setIntegers(double integer1, double integer2) {
        integ1 = integer1;
        integ2 = integer2;
        }
    void binarOperations() {
        cout << "Введите код операции.\nДля умножения - 1" << "\nДля деления - 2" << "\nДля вычитания - 3" << "\nДля сложения - 4" << endl;
        cout << "КОД: ";
        cin >> operateCod;
        switch(operateCod) {
            case 1:
                result = integ1 * integ2;
                cout << "Произведение равно - " << setprecision(3) << fixed << setw(20) << result << endl;
            break;
            
            case 2:
                result = integ1 / integ2;
                cout << "Частное равно - " << setprecision(3) << fixed << setw(20) << result << endl;
            break;
            
            case 3:
                result = integ1 - integ2;
                cout << "Разность равна - " << setprecision(3) << fixed << setw(20) << result << endl;
            break;
            
            case 4:
                result = integ1 + integ2;
                cout << "Сумма равна - " << setprecision(3) << fixed << setw(20) << result << endl;
            break;
            
            case '\n':
            case '\t':
            
            default:
                cout << "Код неправильный" << endl;
            break;
        }
    }
private:
double integ1, integ2, result;
int operateCod;
};
.h файл


Решил проверить себя в плане циклов... На два пустых IF не смотрите, туда еще что-нибудь сделаю. Я знаю что вопрос уже задавался раз сто...НО, как мне русифицировать вывод текста, ибо печатает непонятно что... setlocale(LC_ALL, "RUS"); не помогает. Пожалуйста объясните именно на этом примере. Командная строка MVS 2010, шрифт Lucida Console я поставил. И еще один вопрос: как в таком случае правильно подключать заголовочные файлы С++ библиотеки...тут я их просто продублировал в обоих файла, но наврятле это правильно. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2014, 21:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Русификация вывода (C++):

русификация выводимого из переменных текста - C++
например есть задание: Структура AEROFLOT с полями: - название пункта назначения рейса; - тип самолета. Действия с массивом...

Русификация при помощи класса. - C++
Всем привет! Требуется Ваша помощь в создании файла описания класса для русификации консольной программы. Например есть код (Взято из...

Русификация Си++ с помощю препроцессора и #define - C++
Возможна русификация всех Си++ которые позволяют использовать кириллицу в #define. // Заголовочный файл для русификации служебных слов...

Русификация сбита в системно независимом файле MVS - C++
Создавал системно независимый exe-файл, все хорошо вышло. Нужно было написать программу,которая удаляет повторяющиеся слова и выводит эти...

Перегрузка оператора вывода в С++ (для вывода данных вектора) - C++
Как правильно перегрузить оператор вывода для вектора чтобы он выводил все данные из вектора ? Для этого класса есил можно помогите. ...

Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных одной строки - C++
Написать программу, которая должна включать функции для: - вывода шапки таблицы; - вывода данных одной строки таблицы; - ввода и...

11
proggamer12
17 / 17 / 2
Регистрация: 06.07.2012
Сообщений: 509
Завершенные тесты: 1
10.03.2014, 22:07 #2
Здравствуйте.
Ваша проблема в том, что Вы неправильно указываете параметры: правильно - так:
C++
1
setlocale(LC_ALL, "Russian");
, а в вашем примере:
C++
1
setlocale(LC_ALL, "Rus");
С наилучшими пожеланиями, proggamer12.

Добавлено через 1 минуту
По второму вопросу скорее всего нужно почитать про директивы препроцессора.
0
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
10.03.2014, 22:24  [ТС] #3
Изменил параметр, проблема осталась(
0
proggamer12
17 / 17 / 2
Регистрация: 06.07.2012
Сообщений: 509
Завершенные тесты: 1
11.03.2014, 00:21 #4
Какую среду Вы используете - Visual studio? Если да, то какой версии?

Попробуйте написать Hello World, и проверить работу русского языка в нем. Возможно в одной из строк кода сидит ошибка, которую Вы увидите, сделав правильно что-то простое (т. е. вывод на экран надписи "Здравствуй, Мир"

Добавлено через 44 секунды
P. S. Впишите в calculateModule.h setlocale тоже (на всякий случай)
0
zer0mail
2354 / 1984 / 198
Регистрация: 03.07.2012
Сообщений: 7,118
Записей в блоге: 1
11.03.2014, 00:28 #5
Попробуте вставить
C++
1
setlocale(LC_ALL, "Russian");
и оставить режим консоли по-умолчанию.
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.03.2014, 00:32 #6
C++
1
2
3
4
5
6
7
8
#include <windows.h>
 
int main()
{
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  ...
}
В свойствах консоли выбрать шрифт: Lucida Console.

Добавлено через 3 минуты
Цитата Сообщение от engine76 Посмотреть сообщение
И еще один вопрос: как в таком случае правильно подключать заголовочные файлы С++ библиотеки...тут я их просто продублировал в обоих файла, но наврятле это правильно. Заранее спасибо.
Тут достаточно прописать их в .h файле. using namespace std пишите после всех инклудов.
0
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
11.03.2014, 15:57  [ТС] #7
Перепробовал все варианты, не работает... Среда Visual sudio 2010.

Добавлено через 9 минут
Так не работает (шрифт Lucida)

C++
1
2
3
4
5
6
7
8
9
#include <windows.h>
#include <iostream>
using namespace std;
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cout << "Привет мир" << endl;
    return 0;
    }
И так тоже

C++
1
2
3
4
5
6
7
#include <iostream>
using namespace std;
int main() {
    setlocale(LC_ALL, "Russian");
    cout << "Привет мир";
    return 0;
    }
0
zer0mail
2354 / 1984 / 198
Регистрация: 03.07.2012
Сообщений: 7,118
Записей в блоге: 1
11.03.2014, 16:09 #8
Я предлагал использовать стандартную консоль, без "люсид"
0
Миниатюры
Русификация вывода  
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
11.03.2014, 16:15  [ТС] #9
E:\Programms\VS2010\VC>cl universalModule.cpp
Оптимизирующий компилятор Microsoft (R) C/C++ версии 16.00.30319.01 для x64
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

universalModule.cpp
E:\Programms\VS2010\VC\INCLUDE\xlocale(323) : warning C4530: Использован обработ
чик исключений C++, но семантика уничтожения объектов не включена. Задайте парам
етр /EHsc
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.

/out:universalModule.exe
universalModule.obj

E:\Programms\VS2010\VC>universalModule
Р'Р?РчР?РёС'Рч PIN: -1

E:\Programms\VS2010\VC>

В консоли все стандартно
0
zer0mail
2354 / 1984 / 198
Регистрация: 03.07.2012
Сообщений: 7,118
Записей в блоге: 1
11.03.2014, 16:18 #10
Похоже, что текст программы в Unicode
0
engine76
2 / 2 / 0
Регистрация: 04.03.2014
Сообщений: 65
11.03.2014, 16:39  [ТС] #11
Все понял в чем проблема была...в notepad++ по умолчанию UTF8 кодировка была) Всем спасибо!
0
proggamer12
17 / 17 / 2
Регистрация: 06.07.2012
Сообщений: 509
Завершенные тесты: 1
11.03.2014, 22:47 #12
Удобнее было-бы использовать Visual Studio 2010 или более новую (есть Express версия) - http://www.microsoft.com/ru-ru/softmicrosoft/VisualStudioExpress.aspx
0
11.03.2014, 22:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2014, 22:47
Привет! Вот еще темы с ответами:

Для вывода матрицы на экран использовать рекурсивную функцию вывода одной строки матрицы - C++
Рекурсивная функция в С++. срочно! ДЛЯ вывода матрицы на экран построчно использовать РЕКУРСИВНУЮ функцию вывода на экран одномерного...

Русификация.Работает-супер! Обьяснитте, как это работает? - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;windows.h&gt; using namespace std; char* Rus(const char* text); int main () ...

Русификация консольных приложений - C++
Народ, помогите плиз. Есть ли прога, позволяющая русифицировать консольные приложения на с++? Заранее простите за безграмотность. Изучаю...

Задержка вывода - C++
а подскажите как сделать типа цикл но чтобы другая цифра появлялась через секунду Для решения своих проблем создавайте отдельные темы,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru