Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР1-С++-09-февраля-2012.doc
Скачиваний:
22
Добавлен:
15.09.2019
Размер:
671.74 Кб
Скачать

1.8. Настройка русского языка в консольных программах-Вар1

Вывод русских букв в консольных приложениях на C++

Первое что поначалу немного мешает знакомству и обучению C++, так это кодировки.

Компилируя консольные приложения на славном языке программирования C++ постоянно сталкиваешься с проблемой кодировок. Русские буквы выводятся каракулями, а с английскими все в порядке. Дело в кодировках. В консоли Windows используется кодировка OEM. А в самой ОС Windows - ANSI кодировка.

Существуют различные способы устранения указанного "недоразумения", как с помощью соответствующих средств самого языка С++, так и средствами ИСР.

В консольных приложениях (похожих на текстовый режим) русские буквы выводятся в кодировке CP-866, а в оболочке Dev-C++ они набираются в кодировке CP-1251. Это значит, что вместо русских букв вы увидите «кракозябры». Чтобы этого не случилось, кодировку нужно исправить с помощью простой дополнительной программы. Сделайте следующее:

1. Программы для изменения кодировки русских букв в консольных программах находятся в файлах gccrus.exe и g++rus.exe .

2. Скопируйте программы gccrus.exe и g++rus.exe в папку C:\Dev-Cpp\bin (если при установке оболочки вы указали другую папку вместо стандартной C:\Dev-Cpp, скопируйте программы в ее дочернюю папку с именем bin).

3. Запустите оболочку Dev-C++ и войдите в меню Сервис\Параметры компилятора.

4. В окне Параметры компилятора перейдите на вкладку Программы и исправьте названия двух первых программ так, как показано на рис. 6.

Рис. 6. Вкладка Программы окна Параметры компилятора

5. Теперь при выводе текста на экран можно смело использовать русские буквы, они будут «на лету» перекодироваться.

1.9. Вывод русских букв в консольных приложениях на C++ Вар2

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

  1. Подключить заголовочный файл windows.h

  2. Определить глобальную переменную char bufRus[256];

  3. Определить следующую функцию

char* Rus(const char*text)

{

CharToOem(text, bufRus);

return bufRus;

}

4.При выводе сообщения на русском языке использовать функцию Rus.

Например:

puts(Rus("Введите Ваше имя"));

2. Задание

2.1. Изучить теоретические сведения.

2.2. Ввести и выполнить в среде Dev-C++ приведенную ниже программу 1 (см. раздел 1.8):

# include<stdio.h>

# include<math.h>

# include<conio.h>

main()

{

double x,y,z;

printf("Введите х и y");

scanf("%lf%lf",&x,&y);

z=fabs(x*x+y*y);

printf("z равно %lf",z);

getch();

return 0;

}

2.3. Сохранить текст программы с именем LR1-1.cpp

2.4. Ввести и выполнить в среде Dev-C++ приведенную ниже программу 2 (см. раздел 1.9):

/* Первая программа на языке Си студента Ф.И.О.*/

#include <stdio.h> // Директивы подключения

#include <conio.h> // файлов

#include <windows.h>

char bufRus[256];

char* Rus(const char*text)

{

CharToOem(text, bufRus); return bufRus;

}

main()

{

char name[20]; // Переменная для имени

int b; // Переменная для баллов

puts(Rus("Введите Ваше имя")); // Вывод строки

gets(name); // Ввод строки (имени)

puts(Rus("Здравствуйте"));

puts(name); // Вывод имени

puts(Rus("Сколько баллов Вы набрали при поступлении в Академию?")); scanf("%d",&b); // Ввод целого числа b

// Вывод name и b

printf(Rus("Вы молодец, %s!\n Набрали %d баллов"),name,b); putchar('\n'); // Переход к началу новой строки

getch(); //Организация задержки смены экрана return(0);

}

2.5.Сохранить текст программы с именем LR1-2.cpp

2.6. Написать самостоятельно текст программы для вычисления выражения для своего варианта (таб. 1).

Выражение

Выражение

1

y = ab/c

14

z=ac/b

2

x=a/b-c

15

d=a+b/c

3

v=(a+b)/c

16

g=(a+b)/(b+c)

4

m=(ax+b)/(cx+d)

17

f=a/sinb

5

d=a/cosb

18

s=2adsinx

6

b=2adcosx

19

w=2bccos(a/2)/(b+c)

7

y = a/(bc)

20

t=a-b/c

8

s=a/b+c

21

n=(ax+b)(cx+d)

9

x=a/c-d/f

22

p=2bcsin(b+c)

10

m=2(ax+b)

23

h=x/y+y/z

11

q=2bccos(b+c)

24

r=(ax+b)-(cx+d)

12

g=(a+b)(b+c)

25

f=a/sinb- b/cosa

13

w=2bcsin(a/2)/(b+c)

26

m=5(cx+d)

2.7. Ввести и выполнить в среде Dev-C++ созданную программу 3. Исходные данные для программы задать самостоятельно.

2.8. Сохранить текст программы с именем LR1-3.cpp

2.9. Вывести тексты программы на принтер.

2.10. Подготовить отчет.

2.10. Подготовиться к защите лабораторной работы (вопросы к защите приводятся).