Вариант H01

Разработать программу для формирования в текстовом файле изображения изотетичного набора прямоугольных рамок, расположение которых задано в ресурсном файле. Ресурсный файл должен состоять из записей, каждая из которых специфицирует параметры одной рамки. Параметры рамки должны фиксировать координаты двух противоположных ее углов. Каждая координата должна быть задана целым неотрицательным десятичным числом, которое представлено в символическом формате и обозначает смещение угла рамки по строкам или столбцам относительно начала файла изображения рамок. Изображение каждой рамки должно быть построено из символов (*). При наложении сторон рамок следует использовать символа '#'. Имена файла изображений рамок и ресурсного файла должны передаваться в программу через аргументы командной строки ее вызова.

Вариант H02

Разработать программу для формирования в текстовом файле изображения набора отрезков прямых линий, которые ориентированы вдоль его строк и столбцов. Координаты крайних точек отрезков должны быть специфицированы в ресурсном файле. Каждая координата должна задаваться неотрицательным целым десятичным числом, которое представлено в символическом формате и обозначает смещение по строкам и столбцам относительно начала выходного файла изображений отрезков. При этом запись координат концов любого отрезка должна содержать по крайней мере две равные координаты смещения по строкам или по столбцам, чтобы гарантировать построение изображения либо горизонтального, либо вертикального отрезка. Все записи ресурсного файла, которые не обладают указанным свойством, нужно интерпретировать как координаты пары точек. Изображения горизонтальных отрезков должны быть построены из символов тире '-'. Изображения вертикальных отрезков должны быть построены из символов '|'. Пересечения горизонтальных и вертикальных отрезков, а также изображения отдельных точек должны быть обозначены символами '*'. При наложении горизонтальных или вертикальных отрезков следуетk_спользовать символы '=' и 'I', соответственно. Имена файла изображений отрезков и ресурсного файла должны передаваться в программу через аргументы командной строки ее вызова.

Вариант H03

Разработать интерактивную программу, которая реализует цифровое табло для отображения любых неотрицательных целых десятичных чисел в потоке стандартного вывода (stdout). Отображаемые числа должны передаваться в программу через строки символов потока стандартного ввода (stdin), пока не получен признак его конца. Каждая десятичная цифра от 0 до 9 должна кодироваться [0,1] матрицей, содержащей фиксированное число строк и столбцов двоичных разрядов. При этом кодирование матриц цифр должно осуществляться по строкам в системе счисления по основанию 16. При отображении любой цифры единичные и нулевые разряды ее матрицы кодов должны представляться символом '#' и символом пробела, соответственно. Ориентация изображения чисел цифрового табло должна соответствовать строкам потока стандартного вывода.

Вариант H04

Разработать интерактивную программу, которая реализует цифровое табло для отображения любых неотрицательных целых десятичных чисел в потоке стандартного вывода (stdout). Отображаемые числа должны передаваться в программу через строки символов потока стандартного ввода (stdin), пока не получен признак его конца. Каждая десятичная цифра от 0 до 9 должна кодироваться [0,1] матрицей, содержащей фиксированное число строк и столбцов двоичных разрядов. При этом кодирование матриц цифр должно осуществляться по столбцам в системе счисления по основанию 16. При отображении любой цифры единичные и нулевые разряды ее матрицы кодов должны представляться символом '#' и символом пробела, соответственно. Ориентация изображения чисел цифрового табло должна соответствовать колонкам потока стандартного вывода.

Вариант H05

Разработать программу, которая определяет цвета заданных полей шахматной доски. Любое поле шахматной доски задается парой координат, определяющих его смещение по горизонтали и вертикали от левого нижнего поля, которое имеет черный цвет. Смещение поля по горизонтали задается одной из первых восьми строчных или заглавных букв латинского алфавита ( от A до H или от a до h). Вертикальное смещение поля определяется цифрой в диапазоне от 1 до 8. Требуемые координаты полей должны передаваться программе через аргументы командной строки ее вызова. Результаты анализа заданных полей должны быть сгруппированы по их цветам и отображаться через поток стандартного вывода (stdout).

Вариант H06

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

Вариант H07

Разработать программу преобразования цифрового формата представления времени суток в аналоговый формат. В цифровом формате, характерном для электронных часов, время идентифицируют 3 целых числа, определяющих количество полных часов, минут и секунд. Указанная исходная информация должна передаваться программе через аргумент командной строки, где число часов, минут и секунд разделены символом двоеточия. В результирующем аналоговом формате, свойственном механическим или электро-механическим часам, время определяют углы поворота часовой, минутной и секундной стрелок на циферблате. Положение стрелок часов должно измеряться в угловых градусах относительно луча, проходящего через центр циферблата и через точку, которая соответствует 12 часам. Результат преобразований должен отображаться через поток стандартного вывода (stdout).

Вариант H08

Разработать программу вычисления значения функции (2n)*(2(n-1)-1) при любом целочисленном значении экспоненты n > 1, которое допустимо в диапазоне целых чисел без знака системы программирования C. Результат вычислений должен быть представлен в системах счисления по основаниям 2, 8, 16 и отображен через поток стандартного вывода (stdout). Желаемое значение экспоненты должно быть задано в системе счисления по основанию 10 и передано программе через аргумент командной строки ее вызова. В программе должна быть предусмотрена проверка соответствия величины ее аргумента допустимому диапазону представления целых чисел без знака.

Вариант H09

Разработать программу формирования календаря на любой заданный год или месяц указанного года. Исходная информация должна передаваться программе через аргументы командной строки ее вызова, заданные в форме символьного представления целых чисел, которые обозначают номер месяца в диапазоне от 1 до 12 и/или номер года в диапазоне, который допустим для обработки в системе программирования C. Полученный календарь на месяц или на год должен отображаться в произвольном структурированном формате через поток стандартного вывода (stdout).

Вариант H10

Разработать программу вычисления разности между двумя заданными датами. Каждая дата должна быть задана в формате MMDD[CC]YY, где MM фиксирует номер месяца года в диапазоне от 1 до 12, DD соответствует числу месяца в диапазоне от 1 до 31, CC обозначает две первые необязательные цифры, а YY - две последние цифры, идентифицирующие год. Обе даты, разность которых нужно вычислить, должны передаваться программе через аргументы командной строки ее вызова. Результат вычисления разности дат должен отображаться в потоке стандартного вывода (stdout) числом полных лет и дней между ними по календарю.

Вариант H11

Разработать программу вычисления продолжительности временного интервала между двумя заданными моментами времени суток. Каждый момент времени идентифицирует количество полных часов, минут и необязательных секунд, которые прошли от начала текущих суток. Перечисленные градации каждого момента времени должны быть специфицированы через двоеточие в аргументах командной строки вызова программы. Длительность временного интервала должна отображаться через поток стандартного вывода (stdout) в формате, аналогичном спецификации аргументов командной строки вызова программы.

Вариант H12

Разработать программу поиска в заданном текстовом файле всех различных слов, которые имеют максимальную длину и состоят из различных латинских букв без учета регистра букв. Имя файла, где осуществляется указанный поиск, должно передаваться программе через аргумент командной строки ее вызова. Результаты поиска должны отображаться через поток стандартного вывода (stdout).

Вариант H13

Разработать программу, имитирующую работу цифрового секундомера, который позволяет измерять временные интервалы с точностью до миллисекунды. Временной интервал должен измеряться от момента запуска программы до момента интерактивного прерывания ее работы по сигналу от клавиатуры. Изменение времени в пределах измеряемого интервала должно отображаться в одной строке потока стандартного вывода (stdout). Формат вывода должен содержать поля для отображения часов, минут и секунд, разделенные символом двоеточия, а также поле для отображения миллисекунд, которое отделяется от поля секунд символом точки. Обновление информации в полях указанного формата должно происходить с периодичностью одна миллисекунда. При этом модифицироваться должны только те цифры строки вывода, значения которых изменились относительно предыдущего отображаемого момента времени.

ВариаьC H14

Разработать программу, имитирующую работу цифровых часов для отображения времени с точностью до одной секунды. Изменение показаний цифровых часов в соответствии ходом времени должны отображаться в одной строке потока стандартного вывода (stdout). Формат вывода должен предусматривать отображение числа полных часов, минут и секунд, которые идентифицируют текущий момент времени и разделены символом двоеточия. Обновление показаний часов должно происходить с периодичностью одна секунда. При этом модифицироваться должны только те цифры строки вывода, значения которых изменились относительно предыдущего показания часов. Начальное показание часов должно соответствовать моменту вызова программы или передаваться ей через аргумент командной строки, спецификация которой должна быть идентична формату отображения показаний часов. Остановки часов должна имитироваться путем интерактивного прерывания работы программы по сигналу от клавиатуры.

Вариант H15

Разработать программу, которая для любого заданного года по современному летоисчислению определяет название соответствующего года по японскому календарю. В японском календаре принят 60-ти летний цикл, который состоит из пяти двенадцатилетних подциклов, обозначаемых пятью цветами: зеленый (green), красный (red), желтый (yellow), белый (white) и черный (black). В любом из этих цветных подциклов каждый соответствует названию одного из следующих животных: крыса (rat), бык (bull), тигр (tiger), кролик (rabbit), дракон (dragon), змея (snake), лошадь (horse), овца (sheep), обезьяна (monkey), петух (cock), собака (dog) и кабан (boar). Таким образом, по японскому календарю каждый год в 60-ти летнем цикле обозначает сочетание названий одного из перечисленных цветов и животных. В частности, начало первого цикла, год зеленой крысы (green rat), в современном летоисчислении соответствует 4-му году нашей эры. Программа должна выполняться в режиме фильтра, получая последовательность номеров годов современного летоисчисления через поток стандартного ввода (stdin) и отображая соответствующие им названия в японском календаре через поток стандартного вывода (stdout). Работа программы должна продолжаться до тех пор, пока не получен признак конца входного потока, установленный в операционной среде ее выполнения.

Вариант H16

Разработать программу построения прямоугольника Тартальи с заданным числом строк и столбцов. Его образует таблица натуральных чисел, где верхняя строка и первый столбец состоят из единиц, а каждый из остальных элементов получается посредством сложения двух чисел, расположенных непосредственно над и перед ним. Требуемый размер прямоугольника Тартальи должен передаваться программе через аргумент командной строки, где числовые значения количества строк и столбцов разделены символом 'x'. Результат построения прямоугольника Тартальи должен отображаться через поток стандартного вывода (stdout) в форме регулярной таблицы, где все столбцы выровнены по правой границе.

Вариант H17

Разработать программу, которая в произвольной заданной прямоугольной [0,1]-матрице, состоящей из нулей и единиц, выделяет минимальную по размеру прямоугольную подматрицу, содержащую все ее единицы. Исходная [0,1]-матрица должна быть задана в форме текстового файла, имя которого передается программе через аргумент командной строки ее вызова. Для иллюстрации полученного результата необходимо построить прямоугольную рамку, состоящую из символов '#', которая должна обрамлять элементы искомой подматрицы в исходной матрице без нарушения регулярной структуры ее строк и столбцов в потоке стандартного вывода (stdout).

Вариант H18

Разработать программу построения треугольника Паскаля в равнобедренном формате с заданным количеством строк. В указанном формате треугольник Паскаля должен представляться таблицей натуральных чисел, которые в шахматном порядке построчно заполняют равнобедренный треугольник таким образом, что его боковые стороны состоят из единиц, а каждое внутреннее число равно сумме ближайших к нему чисел предыдущей строки. Требуемое количество строк должно передаваться программе через аргумент командной строки ее вызова. Результат построения должен отображаться через поток стандартного вывода (stdout) в регулярном формате, где содержимое всех колонок выровнено по центральной позиции составляющих их чисел.

Вариант H19

Разработать программу построения треугольника Паскаля в прямоугольном формате с заданным количеством строк. В указанном формате треугольник Паскаля должен представляться нижней треугольной матрицей натуральных чисел, в которой главная диагональ и левый столбец состоят из единиц, а значение любого внутреннего элемента с индексами [i,j] равно сумме значений элементов с индексами [i-1,j] и [i-1,j-1], соответственно. Требуемое количество строк должно передаваться программе через аргумент командной строки ее вызова. Результат построения должен отображаться через поток стандартного вывода (stdout), где содержимое всех колонок выровнено по правой границе составляющих их чисел.

Вариант H20

Разработать программу геометрического представления треугольных чисел, каждое из которых указывает количество любых одинаковых предметов, заполняющих в шахматном порядке равносторонний треугольник. При этом количество предметов, расположенных по каждой его стороне, должно быть равно порядковому номеру соответствующего элемента последовательности треугольных чисел. Порядковый номер треугольного числа, которое нужно представить в указанном формате, должен передаваться программе через аргумент командной строки ее вызова. Геометрическое изображение числа, которое имеет указанный порядковый номер в ряду треугольных чисел, должно быть отображено через поток стандартного вывода (stdout), где образующие искомый треугольник предметы, обозначены символом '*'.

Вариант H21

Разработать программу, которая по заданному расписанию железнодорожных поездов определяет день недели, дату и время прибытия в конечный пункт для указанной даты отправления. Расписание поездов должно быть задано в текстовом файле, каждая запись в котором содержит следующую информацию: название конечного пункта, номер поезда, продолжительность пути в часах и время отправления. Файлы расписания и выполняемого модуля программы должен быть расположены в одном каталоге файловой системы, отличаясь по именам только суффиксами расширения. При выполнении программа должна обеспечивать циклический постраничный просмотр расписания в потоке стандартного вывода (stdout), а также обработку интерактивных запросов, идентифицирующих номер поезда и дату отправления в потоке стандартного ввода (stdin). Если по запросу указан только номер поезда, не указана дата отправления, то обработка запроса должна производиться исходя из текущей даты. Запрос должны игнорироваться, при вводе ошибочных данных. Результаты обработки корректных запросов должны отображаться в потоке стандартного вывода (stdout). При вводе пустой строки по запросу должна отображаться следующая страница расписания или его начальная страница, если текущая была последней. Работа программы должна продолжаться пока не получен признак конца потока стандартного ввода, установленный в операционной среде выполнения программы.

Вариант H22

Разработать программу для преобразования натуральных чисел, заданных арабскими цифрами (0-9), в эквивалентную запись римскими цифрами I, V, X, L, C, D и M, которые имеют значения 1, 5, 10, 50, 100, 500 и 1000, соответственно. При записи числа в римской системе счисления необходимо учитывать, что значения стоящих рядом цифр должны суммироваться, если они расположены в не возрастающем порядке, и вычитаться когда слева от большей цифры стоит меньшая по величине. При этом в римской системе счисления порядок вычитаемых цифр не должен рњmличаться больше, чем на единицу. Преобразуемые натуральные числа, записанные арабскими цифрами, должны передаваться программе через поток стандартного ввода (stdin). Отображение их записи в римской системе счисления должно осуществляться через поток стандартного вывода (stdout). Ввод и преобразование чисел должны продолжаться пока не получен признак конца потока стандартного ввода (stdin), установленный в операционной среде выполнения программы.

Вариант H23

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

Вариант H24

Разработать программу, которая для указанной даты года определяет ее соответствие названию одного из следующих 12-ти знаков зодиака: aries (овен), taurus (телец), gemini (близнецы), cancer (рак), leo (лев), vigro (дева), libra (весы), scorpio (скорпион), sagitarius (стрелец), capricorn (козерог), aquarius (водолей), pisces (рыбы). При этом нужно учитывать, что для указанных знаков зодиака приняты следующие диапазоны дат года: водолей, от 21.01 до 19.02; рыбы, от 20.02 до 20.03; овен, от 21.03 до 20.04; телец, от 21.04 до 21.05; близнецы, от 22.05 до 21.06; рак, от 22.06 до 22.07; лев, от 23.07 до 23.08; дева, от 24.08 до 23.09; весы, от 24.09 до 23.10; скорпион, от 24.10 до 22.11; стрелец, от 23.11 до 21.12; козерог, от 22.12 до 20.01 следующего года. Требуемая дата должна передаваться программе через аргумент командной строки ее вызова. Программа должна обеспечивать обработку даты, указанной либо в цифровом формате, в котором номер месяца года и число месяца разделяют символы косой черты ('/') или дефиса ('-'), либо в алфавитно-цифровом формате, где используется сокращенное англоязычное название месяца (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec) и число месяца после запятой. Латинское название знака зодиака, соответствующего указанной дате, должно отображаться через поток стандартного вывода (stdout).

Вариант H25

Разработать программу для поиска в любом заданном диапазоне натуральных чисел всех чисел, значения которых совпадают с младшими десятичными разрядами своих квадратов. Верхняя и нижняя границы заданного диапазона поиска должны передаваться программе через аргументы командной строки ее вызова. Результат поиска должен содержать записи обнаруженных чисел и их квадратов, которые должны отображаться через поток стандартного вывода (stdout).