Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tekhnologia_programmirovania.pdf
Скачиваний:
182
Добавлен:
08.04.2015
Размер:
1.76 Mб
Скачать

14411

143.Выведите первую из самых коротких строк текстового файла.

144.В текстовый файл построчно записаны целочисленные элементы квадратной матрицы размером 4*4. Прочитайте матрицу из файла в двумерный массив, транспонируйте и запишите транспонированную матрицу в другой файл.

145.В текстовый файл построчно записаны целочисленные элементы квадратной матрицы размером 4*4. Прочитайте матрицу из файла в двумерный массив, вычеркните заданную строку и столбец, полученную матрицу 3*3 запишите в другой файл.

146.Напишите программу, которая выводит сообщения:

Работает программа из файла FILENAME В командной строке имеются слова: WORD1

WORD2

Здесь FILENAME имя файла, в котором находится программа, WORD1, WORD2, … – слова из командной строки.

147. Напишите программу ical, которая сможет выполнять 4 арифметические действия над своими аргументами, то есть в ответ на ввод команды типа

ical 5 + 4

печатать результат выполнения заданной операции: 9.

Глава 12. Работа с экраном дисплея

12.1. Текстовый режим

Экран дисплея может работать в текстовом режиме и, при соответствующей аппаратной и программной поддержке, в графическом режиме. В текстовом режиме на экране можно разместить обычно 25 строк по 80 символов в каждой строке. Средства для работы

втекстовом режиме объявлены в заголовочном файле conio.h.

Втекстовом режиме на экране дисплея действует следующая система координат: ось x направлена слева направо, ось y – сверху вниз; началом координат является левый верхний угол экрана. В начале координат x = 1, y = 1. Координата x является номером символа в

строке, а координата y – номером строки.

На экране могут создаваться текстовые окна. Внешне окна ничем не выделяются, но после создания окна доступной является только его

О файлах и командной строке 145

внутренняя область. В каждый момент времени активным является единственное окно экрана. В окнах действует своя локальная система координат с началом в левом верхнем углу окна. Все функции, обращающиеся к экрану, используют относительные координаты текущего окна, и только одна функция window использует абсолютные координаты, связанные непосредственно с экраном.

Таблица 35. Константы цветов и их значения

Цвет

Константа

Значение

черный

BLACK

0

голубой

BLUE

1

зеленый

GREEN

2

бирюзовый

CYAN

3

красный

RED

4

красно-лиловый

MAGENTA

5

коричневый

BROWN

6

светло-серый

LIGHTGRAY

7

темно-серый

DARKGRAY

8

светло-голубой

LIGHTBLUE

9

светло-зеленый

LIGHTGREEN

10

светло-бирюзовый

LIGHTCYAN

11

светло-красный

LIGHTRED

12

светло-красно-лиловый

LIGHTMAGENTA

13

желтый

YELLOW

14

белый

WHITE

15

В текстовом режиме символы могут выводиться на экран разными цветами на разном фоне. Система TC допускает использования 16 цветов для символов и 8 цветов для фона. В conio.h определены 16 констант, кодирующих возможные цвета. Они приведены в табл.36. Все 16 цветов можно использовать для цвета символов, для цвета фона можно использовать только первые 8 цветов.

Ниже приводится краткое описание некоторых, объявленных в conio.h, функций, которые можно использовать для управления экранном в текстовом режиме.

Функция

void clrscr(void);

очищает текущее текстовое окно, устанавливает заданный цвет фона и помещает курсор в левый верхний угол.

Функция

void gotoxy(int x, int y);

146 11

устанавливает курсор в текущем окне в положение с координатами x, y. Значения x, y могут изменяться от 1 до максимальных размеров окна соответственно в горизонтальном и вертикальном направлении.

Функции

int wherex(void); int wherey(void);

возвращают текущие координаты курсора. Функция

void textbackground(int color);

устанавливает цвет фона color. В качестве цвета можно брать первые 8 цветов из табл.37, задавая их или числами от 0 до 7, или именованными константами, что проще, так как их легче запомнить.

Функция

void textcolor(int color);

устанавливает цвет символов и признак мерцания, определенные в аргументе color. Можно использовать все цвета из табл.38. Для установки признака мерцания используется константа BLINK со значением 128. Если взять, например, color = RED + BLINK; то будет установлен режим вывода красных мерцающих символов.

Функция

void window(int x1, int y1, int x2, int y2);

формирует текстовое окно в виде прямоугольника с координатами левого верхнего угла x1, y1 и правого нижнего угла x2, y2. Используются абсолютные координаты, связанные с экраном.

Функция

int putch(int ch);

выводит на экран в текущую позицию курсора символ с кодом ch, используя установленные цвета символа и фона.

Функция

int getch(void);

читает единственный символ с клавиатуры без его отображения на экране. Если нажимается функциональная или управляющая клавиша, getch возвращает 0. После этого ее можно повторно вызвать и она возвратит некоторый код клавиши. Например, если нажата клавиша «стрелка вверх» , то при первом вызове getch возвратит 0, а при втором – 72. При нажатии клавиши Enter getch возвращает

единственный символ возврат каретки ’\r’ с кодом 13.

О файлах и командной строке 147

Программа 33. Российский флаг

Программа изображает на экране Российский флаг. Изображение флага создает функция RussFlag путем образования трех текстовых окон, у которых цвета фона устанавливаются в соответствии с цветами флага.

По умолчанию на экране используется черный (BLACK) цвет для фона и светло-серый (LIGHTGRAY) цвет для символов. Функция RussFlag изменяет цветовые установки, поэтому они восстанавливаются в функции NormScreen.

//Файл RussFlag.cpp

//Программа изображает на экране флаг России #include <conio.h>

#include <iostream.h> #include <stdlib.h>

double HW = 14.0/9.0;// Отношение высоты к ширине одного знакоместа

//RussFlag: изображает флаг России

void RussFlag(int x, int y, int h)

{

// x, y - координаты левого верхнего угла флага

 

// h - высота одной цветовой полосы

int w;

// Длина флага

w = h * 3 * 2 * HW;

// Флаг состоит из трех цветных полос,

//его длина в 2 раза больше высоты

//Множитель HW дает поправку,

//так как на экране в текстовом режиме

//высота знакоместа больше ширины

//Создаем изображение на экране

window(x, y, x + w, y + h - 1);

// Окно для белой полосы флага

textbackground(LIGHTGRAY);

 

clrscr();

 

window(x, y + h, x + w, y + 2 * h - 1); // Окно для голубой полосы

textbackground(BLUE);

 

clrscr();

 

window(x, y + 2*h, x + w, y + 3*h - 1);

// Окно для красной полосы

textbackground(RED);

 

clrscr();

 

}

// NormScreen: восстанавливает нормальное состояние экрана void NormScreen()

{

window(1, 1, 80, 25);

// Окно во весь экран

textbackground(BLACK);

// Черный цвет фона

textcolor(LIGHTGRAY);

// Светло-серый цвет для символов

clrscr();

// Очистка экрана