Задачи 135-147. файлы и командная строка
135. Напишите программу, выводящую на экран строки текстового файла. Вначале каждой строки печатайте ее номер. Считайте, что строки нумеруются, начиная с 1.
136. Напишите программу, выводящую на экран часть строк текстового файла, номера которых лежат в заданном диапазоне, в начале каждой строки печатайте ее номер.
137. Напишите программу, выводящую на экран содержимое текстового файла за исключением строк, номера которых расположены в заданном диапазоне.
138. Напишите программу, выводящую на экран только нечетные строки файла с указанием номеров строк.
139. Напишите программу, выводящую на экран только четные строки файла с указанием номеров строк.
140. Дан текстовый файл f. Получить из этого файла файл g, заменив все прописные (большие) буквы одноименными строчными.
141. В текстовом файле f записаны целые числа, разделенные пробелами. Запишите в файл g числа из файла f в том же порядке, но из нескольких идущих подряд одинаковых чисел пишите в файл g только одно.
142. Найдите и выведите самую длинную строку текстового файла.
143. Выведите первую из самых коротких строк текстового файла.
144. В текстовый файл построчно записаны целочисленные элементы квадратной матрицы размером 4*4. Прочитайте матрицу из файла в двумерный массив, транспонируйте и запишите транспонированную матрицу в другой файл.
145. В текстовый файл построчно записаны целочисленные элементы квадратной матрицы размером 4*4. Прочитайте матрицу из файла в двумерный массив, вычеркните заданную строку и столбец, полученную матрицу 3*3 запишите в другой файл.
146. Напишите программу, которая выводит сообщения:
Работает программа из файла FILENAME
В командной строке имеются слова:
WORD1
WORD2
…
Здесь FILENAME – имяфайла, в котором находится программа, WORD1, WORD2, … – слова из командной строки.
147. Напишите программу ical, которая сможет выполнять 4 арифметические действия над своими аргументами, то есть в ответ на ввод команды типа
ical 5 + 4
печатать результат выполнения заданной операции: 9.
Глава 12. Работа с экраном дисплея
Текстовый режим
Экран дисплея может работать в текстовом режиме и, при соответствующей аппаратной и программной поддержке, в графическом режиме. В текстовом режиме на экране можно разместить обычно 25 строк по 80 символов в каждой строке. Средства для работы в текстовом режиме объявлены в заголовочном файле conio.h.
В текстовом режиме на экране дисплея действует следующая система координат: ось x направлена слева направо, ось y – сверху вниз; началом координат является левый верхний угол экрана. В начале координат x = 1, y = 1. Координата x является номером символа в строке, а координата y – номером строки.
На экране могут создаваться текстовые окна. Внешне окна ничем не выделяются, но после создания окна доступной является только его внутренняя область. В каждый момент времени активным является единственное окно экрана. В окнах действует своя локальная система координат с началом в левом верхнем углу окна. Все функции, обращающиеся к экрану, используют относительные координаты текущего окна, и только одна функция window использует абсолютные координаты, связанные непосредственно с экраном.
Таблица 16. Константы цветов и их значения
Цвет | Константа | Значение |
черный голубой зеленый бирюзовый красный красно-лиловый коричневый светло-серый темно-серый светло-голубой светло-зеленый светло-бирюзовый светло-красный светло-красно-лиловый желтый белый | BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE |
В текстовом режиме символы могут выводиться на экран разными цветами на разном фоне. Система TC допускает использования 16 цветов для символов и 8 цветов для фона. В conio.h определены 16 констант, кодирующих возможные цвета. Они приведены в табл.16. Все 16 цветов можно использовать для цвета символов, для цвета фона можно использовать только первые 8 цветов.
Ниже приводится краткое описание некоторых, объявленных в conio.h, функций, которые можно использовать для управления экранном в текстовом режиме.
Функция
void clrscr(void);
очищает текущее текстовое окно, устанавливает заданный цвет фона и помещает курсор в левый верхний угол.
Функция
void gotoxy(int x, int y);
устанавливает курсор в текущем окне в положение с координатами x, y. Значения x, y могут изменяться от 1 до максимальных размеров окна соответственно в горизонтальном и вертикальном направлении.
Функции
int wherex(void);int wherey(void);
возвращают текущие координаты курсора.
Функция
void textbackground(int color);
устанавливает цвет фона color. В качестве цвета можно брать первые 8 цветов из табл.16, задавая их или числами от 0 до 7, или именованными константами, что проще, так как их легче запомнить.
Функция
void textcolor(int color);
устанавливает цвет символов и признак мерцания, определенные в аргументе color. Можно использовать все цвета из табл.16. Для установки признака мерцания используется константа 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.