Мегаобучалка Главная | О нас | Обратная связь


Ввод и вывод русских символов



2015-11-07 929 Обсуждений (0)
Ввод и вывод русских символов 0.00 из 5.00 0 оценок




При выводе на консоль русские символы могут отображаться некорректно. Попробуйте запустить следующий пример:

 

cout<<"Столовая наполнилась неприятным"<<endl;

cout<<"синим сигарным дымом.

Пес дремал,"<<endl;

cout<<"уложив голову на передние лапы"<<endl;

 

Если текст на экране отобразился нормально, то дальше можно не читать, однако, если вы увидели нечто подобное:

 

 

то вам следует изучить данный раздел, чтобы научиться отображать русские символы корректно.

Первый, наиболее простой способ, заключается в использовании так называемого транслита. В этом случае можно заменять русские буквы английскими подобно тому, как часто пишут в СМС. Например, вместо фразы «Столовая наполнилась дымом» можно написать «Stolovaya napolnilas’ dymom». Однако подобный способ – это насилие над русским языком, поэтому намного лучше – научиться работать с русскими буквами.

Для корректного отображения русских символов попробуйте добавить в программу следующее:

 

#include <iostream>

using namespace std;

#include <locale.h>

 

int main() {

setlocale(LC_ALL, "Russian");

cout<<"Столовая наполнилась неприятным"<<endl;

cout<<"синим сигарным дымом.

Пес дремал,"<<endl;

cout<<"уложив голову на передние лапы"<<endl; return 0;

}

 

 

После этого текст должен отобразиться так, как требуется:

 

Однако это еще не все. Рассмотрим пример:

 

setlocale(LC_ALL, "Russian");

char name[20];

cout << "Введите свое имя:";

cin >> name;

cout << "Ваше имя:";

cout << name << endl;

 

Введенное имя выведется некорректно:

 

Для устранения проблемы можно использовать второй способ:

 

#include <iostream>

using namespace std;

#include <windows.h>

 

int main() {

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

char name[20];

char name[20];

cout << "Введите свое имя:";

cin >> name;

cout << "Ваше имя:";

cout << name << endl;

return 0;

}

 

Кроме того, нужно сменить шрифт консоли. Щелкните правой клавишей мыши на шапку консоли и выберите Свойства. Выберите вкладку Шрифт и установите Lucida Console.

Примеры решения задач

Задача 1.Подоходный налог в России составляет 13%. Напишите программу, которая принимает доход гражданина в рублях и вычисляет фактическую денежную сумму, которую он получит на руки.

 

//Если работаем в Visual Studio, то

//добавляем эту строку

#include "stdafx.h"

 

//… для cout и cin

#include <iostream>

using namespace std;

 

//… для setlocale()

#include <locale.h>

 

int main() {

//Корректно отображаем русские сивмолы

setlocale(LC_ALL, "Russian");

 

//Объявляем переменную для дохода

float income;

 

//Просим пользователя ввести доход

cout << "Введите свой доход:" << endl;

 

//Вводим расстояние

cin >> income;

 

//Вычисляем реальный доход (-13%)

float real_income = income*0.87;

 

//Выводим результат на экран

cout << "Ваш фактический доход составляет "

<< real_income << "рублей" << endl;

system("pause");

return 0;

}

Задача 2.Расстояние от Земли до Солнца составляет 150 000 000 км. Скорость света равна 300 000 км/сек. Напишите программу, которая вычисляет, за какое время свет, стартовавший с Солнца, достигнет поверхности Земли.

#include "stdafx.h"

#include <iostream>

using namespace std;

#include <locale.h>

 

int main() {

setlocale(LC_ALL, "Russian");

 

//Скорость света (км/сек)

float light_speed = 300000;

 

//Расстояние от Солнца до Земли (км)

float distance = 150000000;

 

//Время в секундах

float time_sec = distance/light_speed;

 

//Время в минутах

float time_min = time_sec/60;

 

//Выводим результат на экран

cout << "Свет достигнет Земли за " <<

time_sec << " секунд ";

cout<< "или за " << time_min << " минут." <<

endl;

system("pause");

return 0;

}

Задача 3.Напишите программу, которая принимает трёхзначное число и вычисляет сумму его цифр.

 

#include "stdafx.h"

#include <iostream>

using namespace std;

#include <locale.h>

 

int main() {

setlocale(LC_ALL, "Russian");

 

//Шестизначное число

int number;

cout << "Введите трёхзначное число:" << endl;

cin >> number;

 

//Вычленяем три его цифры

int d1 = (number/100)%10;

int d2 = (number/10)%10;

int d3 = number%10;

 

//Выводим результат

cout << "Сумма цифр числа " << number;

cout << " равна " << (d1+d2+d3) << endl;

system("pause");

return 0;

}

 

Задача 4.Напишите программу, которая выводит на экран цифру 8 из звёздочек.

 

#include "stdafx.h"

#include <iostream>

using namespace std;

 

int main() {

cout << "***" << endl << "* *" << endl;

cout << "***" << endl << "* *" << endl;

cout << "***" << endl;

system("pause");

return 0;

}

 

Задача 5.Напишите программу, которая принимает фамилию, имя и отчество человека, а затем выводит его полное имя.

 

#include "stdafx.h"

#include <iostream>

using namespace std;

#include <windows.h>

 

int main() {

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

 

char first_name[100];

char surname[100];

char patronymic[100];

 

cout << "Введите Вашу фамилию: ";

cin >> surname;

 

cout << "Введите Ваше имя: ";

cin >> first_name;

 

cout << "Введите Ваше отчество: ";

cin >> patronymic;

 

cout << "Ваше полное имя:" << endl;

cout << surname << " " << first_name

<< " " << patronymic << endl;

system("pause");

return 0;

}

 

КОНТРОЛЬНЫЕ ВОПРОСЫ

1. Опишите структуру программы на языке Си.

2. Какая директива подключает библиотеку?

3. Какую библиотеку нужно подключить для работы с операторами cout и cin?

4. Что такое комментарий? Какие типы комментариев существуют в языке Си? Как выделить комментарий?

5. Перечислите известные вам типы данных, которые есть в языке Си. Какой размер в памяти занимают переменные этих типов? Какие значения они могут принимать?

6. Объясните, чем отличаются ключевые слова от идентификаторов? Какие правила нужно соблюдать при создании имен переменных? Приведите примеры корректных и некорректных идентификаторов.

7. Объясните, как работает операторы cout и cin. Приведите примеры. Зачем нужна команда endl?

8. Какие основные арифметические операторы существуют в языке Си?

9. Как выполнить деление нацело и вычислить остаток от деления?

10. Объясните, в чём заключается различие между кавычками и апострофами при работе с символами и строками. Приведите примеры.

11. Как сделать так, чтобы русские символы отображались корректно?

12. Какую библиотеку нужно подключить для работы с функцией setlocale()?

13. Какая библиотека требуется для работы с функциями SetConsoleCP() и SetConsoleOutputCP()?

14. Какой из значков << или >> используется в операторе cout (cin)?

15. Какие значки используются в Си в качестве аналогов для begin и end в Паскале?



2015-11-07 929 Обсуждений (0)
Ввод и вывод русских символов 0.00 из 5.00 0 оценок









Обсуждение в статье: Ввод и вывод русских символов

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (929)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)