Общие замечания

Приступая к решению задач этого раздела, следует вспомнить, что:

  • в графическом режиме экран представляет собой совокупность точек, каждая из которых может быть окрашена в один из 16-ти цветов;
  • координаты точек возрастают слева направо и сверху вниз. Левая верхняя точка имеет координаты (0,0), правая нижняя — (639,479);
  • для того чтобы программа могла выводить на экран графические примитивы (линии, окружности, прямоугольники), необходимо инициализировать графический режим.

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

// шаблон графической программы finclude #include

#define PATHTODRIVER "c: WborlandcWbgiW"

void main(void)

{

int gdriver = DETECT; // драйвер

int gmode; // режим

int errorcode; // код ошибки

initgraph(sgdriver, Sgmode, PATHTODRIVER); errorcode = graphresult();

if (errorcode != grOk) // ошибка инициализации

// графического режима {

printf("Ошибка: %d\n", errorcode);

puts("Для завершения программы нажмите '

getch();

return;

// далее инструкции программы

closegraph(); // завершение графического режима

Задачи

204. Написать программу, которая вычерчивает на экране домик.

I 205. Написать программу, которая выводит на экран флаг Олимпийских игр. Изображение флага приведено ниже (одной клетке соответствует пять пикселов).

206. Написать программу, которая вычерчивает на экране кораблик.

207. Написать программу, которая вычерчивает на экране ракету.

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

209. Написать программу, которая вычерчивает на экране узор из 100 окружностей случайного диаметра и цвета.
210. Написать программу, которая вычерчивает на экране узор из 50 прямоугольников случайного размера и цвета.
211. Написать программу, которая вычерчивает на экране узор — ломаную линию из 100 звеньев со случайными координатами, случайного цвета.
212. Написать программу, которая выводит на экран контур пятиконечной звезды.

213. Написать программу, которая выводит на экран пятиконечную звезду красного цвета с белой окантовкой.
214. Написать программу, которая вычерчивает на экране шестиугольник.
215. Написать программу, которая рисует на экране Государственный флаг России.

216. Написать программу, которая рисует на экране веселую рожицу желтого цвета.

217. Написать программу, которая рисует на экране грустную рожицу.

218. Написать программу, которая выводит на экран изображенный ниже узор.

219. Написать программу, которая выводит на экран изображенный ниже узор. Окружности должны быть разного цвета: от синего до белого (смотри таблицу "кодировки цветов, справочник, функция setcolor).

220. Написать программу, которая выводит на экран изображенный ниже узор.

221. Написать программу, которая выводит на экран изображенный ниже узор.

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

224. Написать программу, которая рисует на экране паровоз. Используйте метод базовой точки.

225. Написать программу, которая рисует на экране автомобиль. Инструкции, обеспечивающие вычерчивание колеса автомобиля, оформите как функцию.

226. Написать программу, которая выводит на экран оцифрованную координатную сетку.

227. Написать программу, которая выводит на экран точечный график функции у=0,5х2+4х-3. Диапазон изменения аргумента — от -15 до 5; шаг аргумента — 0,1. График вывести на фоне координатных осей, точка пересечения которых должна находиться в центре экрана.
228. Написать программу, которая рисует движущуюся по экрану окружность.
229. Написать функцию, которая рисует на экране кораблик. В качестве параметров функция должна получать координаты базовой точки и цвет, которым следует рисовать. Используя эту функцию, напишите программу, которая выводит на экран движущийся кораблик.
230. Написать программу, которая выводит на экран гистограмму успеваемости в классе, например по итогам контрольной работы. Исходные данные следует ввести в алфавитно-цифровом режиме работы. Рекомендуемый вид экрана во время работы программы приведен ниже. Ниже показан вид экрана во время ввода исходных данных, а под ним — вид диаграммы.

Обработка результатов контрольной работы
Введите исходные данные:
пятерок -> 10
четверок -> 15
троек -> 7
двоек -> 1
Результаты контрольной работы

231. Написать программу, которая выводит круговую диаграмму, отражающую товарооборот (в процентах) книжного магазина. Исходные данные (объем продаж в рублях по категориям: книги, журналы, открытки и канцтовары) вводятся во время работы программы. Пример диаграммы приведен ниже.

232. Написать программу, которая выводит на экран изображение работающего светофора. Рекомендуемый вид светофора и алгоритм его работы приведены ниже.

Факультатив

233. Написать программу, которая выводит на экран изображение идущих часов, у которых есть секундная и минутная стрелки.
234. Написать программу, которая выводит на экран график функции у=2 sin(x) еx/5.

Файлы

Общие замечания

Приступая к решению задач этого раздела, следует вспомнить, что:

  • в программе, которая выполняет операции чтения из файла или запись в файл, должна быть объявлена переменная-указатель на тип file;
  • для того чтобы файл был доступен, его надо открыть, указав, для выполнения какого действия открывается файл: чтения, записи или обновления данных, а также тип файла (двоичный или текстовый);
  • при работе с файлами возможны ошибки, поэтому рекомендуется при помощи функции ferror проверять результат выполнения потенциально опасных, с точки зрения возникновения ошибок, операций с файлами (fopen);
  • чтение данных из текстового файла можно выполнить при помощи функции fscanf, запись — fprintf;
  • по завершении работы с файлом нужно его обязательно закрыть (функция fclose).

Задачи

235. Напишите программу, которая на сменном диске компьютера (диск А:) создает файл numbers.txt и записывает в него 5 введенных пользователем целых чисел. Просмотрите при помощи редактора текста, например, встроенного в Norton Commander, созданный файл. Убедитесь, что каждое число находится в отдельной строке.
236. Напишите программу, которая дописывает в файл A:\numbers.txt пять введенных пользователем целых чисел. Убедитесь при помощи редактора текста, что в файле находятся 10 чисел.
237. Напишите программу, которая выводит на экран содержимое файла A:\numbers.txt.
238. Напишите программу, которая вычисляет среднее арифметическое чисел, находящихся в файле A:\numbers.txt.
239. Напишите программу, которая позволяет просматривать текстовые файлы (выводит на экран содержимое файла), например, файлы исходных программ C++. Имя просматриваемого файла должно передаваться программе в качестве параметра, в командной строке во время ее запуска.
240. Напишите программу, которая дописывает в находящийся на диске А: файл phone.txt имя, фамилию и номер телефона, например, вашего товарища. Если файла на диске нет, то программа должна создать его. В файле каждый элемент данных (имя, фамилия, телефон) должен находиться в отдельной строке. Рекомендуемый вид экрана во время работы программы приведен ниже.

Добавление в телефонный справочник
Фамилия -> Сидоров
Имя -> Вася
Телефон -> 234-84-37
Информация добавлена.
Для завершения работы нажмите

241. Напишите программу, которая позволяет за один сеанс работы добавить информацию о нескольких людях в файл A:\phone.txt. Рекомендуемый вид экрана во время работы программы приведен ниже.

Добавление в телефонный справочник.
Для завершения вместо ввода фамилии нажмите
Фамилия -> Сидоров
Имя -> Вася
Телефон -> 234-84-37
Информация добавлена.
Фамилия -> Орлов
Имя -> Андрей
Телефон -> 552-18-40 "
Информация добавлена.
Фамилия ->
Ввод завершен
Для завершения работы нажмите

242. Напишите программу, которая позволяет найти в телефонном справочнике (A:\phone.txt) нужные сведения. Программа должна запрашивать фамилию человека и выводить его телефон. Если в справочнике есть люди с одинаковыми фамилиями, то программа должна вывести список всех этих людей. Рекомендуемый вид экрана во время работы программы приведен ниже.

Поиск в телефонном справочнике.
Введите фамилию и нажмите . Для завершения работы с
программой сразу после приглашения нажмите
-> Петров
В справочнике данных о Петров нет.
-> Иванов
Иванов Вася 578-12-45
Иванов Сергей 244-34-02

243. Напишите программу, которая объединяет возможности программ "Добавление в телефонный справочник" и "Поиск в телефонном справочнике". При запуске программы на экран должно выводиться меню, вид которого приведен ниже.

*** Телефонный справочник ***
1. Добавление
2. Поиск
3. Завершение работы
Введите номер пункта меню и нажмите

Факультатив

244. Напишите универсальную программу тестирования. Тест, последовательность вопросов и варианты ответов должны находиться в текстовом файле. Имя файла теста программа должна получать из командной строки запуска программы. Количество вопросов теста неограничено. Вместе с тем, предлагается ввести следующее ограничение: текст вопроса и альтернативных ответов не должен занимать более одной строки экрана.
Программа должна выставлять оценку по следующему правилу: ОТЛИЧНО — за правильные ответы на все вопросы, ХОРОШО — если испытуемый правильно ответил не менее чем на 80% вопросов, УДОВЛЕТВОРИТЕЛЬНО — если правильных ответов более 60%, и ПЛОХО — если правильных ответов меньше 60%.
Ниже приведена рекомендуемая структура файла вопросов теста (Ni — количество альтернативных ответов к i-ому вопросу, кь — номер правильного ответа), пример файла теста и вид экрана во время работы программы (номера ответов, введенные пользователем, выделены полужирным шрифтом).

Вопрос1
N1 M1
Ответ
...
Ответ
Вопрос2
N2 M2
Ответ
...
Ответ
Вопросk
Nk Mk
Архитектор Исаакиевского собора
3 2
Доменико Трезини
Огюст Монферран
Карл Рос си
Архитектор Зимнего дворца
2 2
Франческо Бартоломео
Огюст Монферран
Невский проспект получил свое название
3 2
По имени реки, на которой стоит Санкт-Петербург.
По имени близко расположенного монастыря, Александро-Невской
лавры.
в память о знаменитом полководце — Александре Невском.
Сейчас Вам будет предложен тест.
К каждому вопросу дается несколько вариантов ответов.
Вы должны ввести номер правильного ответа
и нажать клавишу
Архитектор Исаакиевского собора:
1. Доменико Трезини
2. Огюст Монферран
3. Карл Росси -> 2
Архитектор Зимнего дворца:
1. Франческо Бартоломео
2. Карл Росси -> 2
Часть I. Задачи
67
Невский проспект получил свое название:
1. По имени реки, на которой стоит Санкт-Петербург.
2. По имени близко расположенного монастыря, Александро-Невской лавры.
З.в память о знаменитом полководце — Александре Невском.
Ваша оценка ОТЛИЧНО!
Для завершения работы программы нажмите

245. Напишите программу, которая выводит на экран список файлов и названия программ C++, находящихся в указанном при запуске программы каталоге. Предполагается, что первая строка программы является коментарием, содержащим информацию о назначении программы.
246. Напишите программу, которая по желанию пользователя выводит таблицу пересчета из дюймов в сантиметры на экран, принтер или в файл. Ниже приведен рекомендуемый вид экрана во время работы программы (данные, введенные пользователем, выделены полужирным шрифтом.

*** Таблица пересчета из дюймов в миллиметры *** Результат выводить:
1 — на экран;
2 — на принтер;
3 — в файл.
Введите число от 1 до 3 и нажмите Ваш выбор -> 1
Дюймы Миллиме тры
0.5 12.7
1.0 25.4
1.5 38.1
2.0 50.8
2.5 63.5
3.0 76.2
3.5 88.9
4.0 101.6
4.5 114.3
5.0 127.0

Рекурсия

Приступая к решению задач этого раздела, следует вспомнить, что:

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

Задачи

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

249. Написать программу, которая вычисляет сопротивление электрической цепи, схема которой приведена на рисунке. Величины сопротивлений и порядок цепи (количество сопротивлений R2) должны вводиться во время работы программы.

250. Напишите программу, которая вычерчивает на экране приведенную в задаче 249 схему электрической цепи. Порядок цепи должен вводиться во время работы программы.

Факультатив

251. Написать программу, которая вычерчивает на экране кривую Гильберта, показанную на рисунке. Обратите внимание, что кривая второго порядка получается путем соединения четырех кривых первого порядка, две из которых повернуты на 90 градусов: одна по, другая — против часовой стрелки. Аналогичным образом получается кривая третьего порядка, но при этом в качестве "кирпичиков" используются кривые второго порядка. Порядок вычерчиваемой кривой должен вводиться во время работы программы.

252. Написать программу, которая вычерчивает на экране кривую Серпинского. Порядок кривой должен вводиться во время работы программы. Вид кривых Серпинского первого, второго и третьего порядка приведен ниже.