Вы находитесь на странице: 1из 52

621.

398
Б 28
УДК 681.3.06(072)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ


--------------------------
МОСКОВСКИЙ ЭНЕРГЕТИЧЕСКИЙ ИНСТИТУТ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
--------------------------------------------------------------------------------------------

В. С. БАТАСОВА

СБОРНИК ЗАДАНИЙ
ПО ПРОГРАММИРОВАНИЮ

МЕТОДИЧЕСКОЕ ПОСОБИЕ
ПО КУРСУ
"ИНФОРМАТИКА"
для студентов младших курсов
всех направлений и специальностей МЭИ

Под редакцией И. Н. Котаровой


Москва Издательство МЭИ 2000

2
621.398
Б 28
УДК 681.3.06(072)
Утверждено учебным управлением МЭИ

Подготовлено на кафедре прикладной математики МЭИ

Батасова В.С.
Сборник заданий по программированию. – М.: Издательство
МЭИ, 2000. –47 с.

В сборник включены оригинальные задания на


параметрические и итерационные циклы, имеющие ясный
практический смысл, а также задания на процедуры-параметры,
поиск экстремальной фигуры на множестве точек и обработку
текстовой информации. По каждой теме дано 30 задач
приблизительно одинаковой сложности.
Для студентов младших курсов всех направлений и
специальностей МЭИ
_________________________________________
Учебное издание

Батасова Валентина Сергеевна


Сборник заданий по программированию
Методическое пособие
по курсу
"Информатика"

Редактор О.М.Горина
ЛР № 020528 от 05.06.97
Темплан издания МЭИ 1999 г. (II), метод. Подписано к печати
06.01.00
Формат 6084/16 Физ.печ.л. 3,0
Тираж 150 Изд.№169 Заказ
________________________________________________________
___

3
Издательство МЭИ, 111250, Москва, Красноказарменная, д.14
Типография ЦНИИ "Электроника", 117415, Москва, просп. Вернадского,
д.39
© Московский энергетический институт 2000

ПРЕДИСЛОВИЕ
Предлагаемые задания можно рассматривать как дополнение к
неоднократно переиздававшемуся в МЭИ задачнику по
программированию В.С. Зубова (последние издания с
соавторами, под редакцией И. Н. Котаровой). Задания
предназначены для использования в курсе “Информатика” на
младших курсах для всех направлений и специальностей МЭИ.
Первые две главы содержат задачи на параметрические и
итерационные циклы без разветвлений в теле цикла. Задачи
публикуются впервые. Они имеют ясный практический смысл и,
возможно, будут более интересны студентам, чем другие задачи
по этой тематике.
В третью главу включены переработанные задачи на процедуры-
параметры из сборника задач В. С. Зубова. Условие изменено
таким образом, что решение без применения процедур-
параметров становится невозможным.
В четвертой и пятой главах представлены, соответственно,
экстремальные задачи геометрического содержания и задачи
обработки символьной информации.
Каждая глава содержит 30 задач приблизительно одинаковой
сложности.

1. ЗАДАЧИ НА ПАРАМЕТРИЧЕСКИЕ ЦИКЛЫ

1.1. Вывод результатов в виде таблицы


2. Заработная плата служащего в январе составила Z руб. Вывести
прогнозируемую ежемесячную зарплату в период с февраля по
июнь, если прогнозируемый ежемесячный коэффициент
индексации (по отношению к предыдущему месяцу) составляет p%.
3. Вы открыли счет, положив на него Z руб. , и переводите на него в
начале каждого месяца Y руб., процентная ежемесячная ставка р%.

4
Вычислить, сколько денег будет на счете на конец 1-го, 2-го, ..., N-го
месяца накопления.
4. Qначальная стоимость оборудования, Tгодовое снижение
стоимости за счет амортизации. Вывести стоимость оборудования
через 1, 2, ..., N лет эксплуатации. Предполагается, что T не зависит
от срока эксплуатации и Q > NT.
5. Ежемесячный доход по ценным бумагам составляет р% от их
номинальной стоимости N. Вычислить суммарный доход за
1, 2, ..., М месяцев.
6. На текущий момент 1$ = А руб. Вычислить прогнозируемый
эквивалент для N долларов в каждый из ближайших 10 дней, если
предполагается ежедневный рост курса доллара на р%.
7. Средняя заработная плата в январе составила N руб., а
стоимость потребительской корзины—К руб. Вывести ежемесячную
прогнозируемую разность между средней заработной платой и
стоимостью потребительской корзины в период с февраля по
декабрь, если предполагается, что ежемесячный рост заработной
платы составит р%, а потребительской корзины—q%.
8. В стране с населением N млн чел. в ближайшие М лет
прогнозируется средний ежегодный прирост населения р%. Доля
населения, занятого в промышленности, предполагается
неизменной за этот срок и равной q%. Определить численность
населения, занятого в промышленности страны, через 1, 2, 3, ..., М
лет.
9. Пенсионные отчисления составляют р% заработной платы.
Определить ежемесячные пенсионные отчисления со средней
заработной платы в течение года, если в январе она составляла
N руб., а затем каждый месяц увеличивалась на К%.
10. Начиная с января, на счет клиента в начале месяца переводится
Z руб. (заработная плата) и снимается К руб. (коммунальные
услуги); в конце месяца производится начисление р% от
накопленной суммы. Вывести, сколько денег будет на счете в
начале каждого месяца в течение года, если начальный вклад
равен нулю.
11. Стоимость товара равна А $. Курс доллара равен В руб. и
прогнозируется его ежемесячное изменение на р% (увеличение или

5
уменьшение в зависимости от знака р). Вывести стоимость товара в
рублях для последующих М месяцев.
12. К началу октября на овощном складе хранилось Q т картофеля.
Ежемесячно изымается S т для продажи. Естественная
ежемесячная убыль (за счет гниения и т. д.) предполагается
постоянной и равной р%. Определить предполагаемое количество
картофеля на складе на начало ноября, декабря, ..., июня. Считать,
что Q 9S (всего рассматривается 9 месяцев).
13. В первый день практики ученик изготовил А деталей первого
вида и В деталей второго вида. В каждый последующий день
количество изготовленных за день деталей первого вида
увеличивалось на Р деталей, а количество деталей второго видана
Т деталей (по сравнению с предыдущим днем). Вывести суммарное
количество деталей (первого и второго вида), изготовленных
учеником в 1-й, 2-й,..., N-й день практики.
14. Пени за неуплату налога составляют р% от величины
налога за каждый день после установленной даты. Для заданной
величины налога вывести подлежащую уплате сумму в 1-й, 2-
й,..., N-й день после установленной даты.
15. В первый год эксплуатации нефтяная скважина дала М млн т
нефти. Предполагается, что в течение первых десяти лет ежегодная
добыча нефти будет увеличиваться на Р млн т (по сравнению с
предыдущим годом), а затем ежегодно уменьшаться на h% (от
количества предыдущего года). Определить ежегодную добычу
нефти для первых пятнадцати лет эксплуатации.
16. Средняя продолжительность жизни населения некоторой страны
составляет А лет. В течение ближайших М лет прогнозируется ее
увеличение на р% ежегодно за счет улучшения медицинского
обслуживания и уменьшение на q% ежегодно за счет ухудшения
экологии. Вывести прогнозируемую среднюю продолжительность
жизни в каждый из рассматриваемых годов.
17. Доход предприятия в первый год его существования составил
А у.е. Предполагается, что в течение следующих М лет доход будет
увеличиваться на В у.е. ежегодно, а далее уменьшаться на р%
ежегодно. Определить доход предприятия в 1-й, 2-й,..., (2*М)-й годы
его существования.

6
18. Население некоторого района составляет М тыс. чел., а длина
шоссейных дорог районаН км. Существует прогноз, согласно
которому население будет увеличиваться на р%, а длина
шоссейных дорогна В км ежегодно. Вывести значение длины
шоссейных дорог на 1 тыс. жителей для каждого из последующих N
лет.

7
19.
20. Пусть в некоторой стране А человек страдает некоторым
заболеванием. Предполагается снижение этого числа на р% за счет
профилактики заболевания и на q% за счет применения новых
методов лечения. Вывести прогнозируемое число больных в
каждый из последующих М лет.
21. Население страны составляет А млн чел., из них р% городского.
Предполагается ежегодное увеличение численности населения
страны на b% и увеличение доли городского населения на q%.
Определить предполагаемое количество городского и сельского
населения страны в каждый из последующих М лет.
22. Население страны составляет А млн чел. Прогнозируется
ежегодная рождаемость р% населения и смертность q%. Вычислить
ежегодный прирост населения в течение ближайших М лет.
23. Население страны составляет А млн чел., количество врачей
В млн чел. Прогнозируется ежегодный рост населения р% и
ежегодное увеличение числа врачей на Q тыс. специалистов.
Вывести количество врачей на душу населения для каждого из
ближайших десяти лет.
24. Заработная плата специалиста составляет А руб., курс
доллараВ руб.. Предполагается ежемесячное увеличение
заработной платы в руб. на р% (по отношению к заработной плате
предыдущего месяца) и прогнозируется ежемесячное изменение
курса доллара на q% (уменьшение или увеличение в зависимости
от знака q). Вывести величину заработной платы специалиста в
долларовом эквиваленте за каждый из последующих шести
месяцев.
25. Начальная стоимость продукта равна А руб. Предполагается
ежемесячное уменьшение этой стоимости за счет
совершенствования технологии на Р руб. и ежемесячное
увеличение на q% за счет роста стоимости электроэнергии.
Вывести прогнозируемую стоимость продукта через 1, 2, ..., 10
месяцев.
26. Длина шоссейных дорог некоторого района составляет А км.
Прогнозируется ежегодное их увеличение на В км. Для данной
местности считается необходимым иметь один пост ГАИ на С км

8
шоссейных дорог. Вывести необходимое число постов ГАИ в районе
для последующих М лет.
27. Урожайность пшеницы составляет А цга, урожайность ржи—
В цга. Вывести количество пшеницы и ржи (по отдельности),
собираемое с 2, 3,..., М га.
28. Урожайность пшеницы в год разработки целинных земель
составила А цга, затраты на ее получениеВ руб.га. Существует
прогноз, что в последующие годы урожайность будет уменьшаться
на р% в год при увеличении затрат на q%. Вывести себестоимость 1
ц пшеницы в каждый из последующих М лет.
29. Резервуар содержит Р кг вещества. В начале каждых суток из
него изымается Т кг вещества. За сутки улетучивается q%
вещества. Вывести массу вещества в резервуаре на конец первых,
вторых, ..., М-х суток. Предполагается, что РМ*Т.
30. Озеро содержит А км3 воды. Ежегодно объем воды уменьшается
(например, за счет усыхания) на р%. Вывести объем воды в озере
через 1, 2,...,М лет , а также его ежегодное уменьшение в км3.
31. 1 кВт электроэнергии стоит А руб. Прогнозируется ежегодное
увеличение этой стоимости на р%. Вывести прогнозируемую
годовую плату за электроэнергию средней семьи (при потреблении
2000 кВт в год) через 1, 2,...,М лет.
32. Розничная цена товара составляет А руб. за 1 кг, оптоваяна р%
ниже. Вывести стоимость 5, 10, 15, ...,50 кг товара по розничной и
оптовой цене.

1.2. Добавления к задачам п.1.1 (вывод результатов в виде


таблицы)
Изменить алгоритм, считая что:
33. В феврале прогнозируемый ежемесячный коэффициент
индексации заработной платы равен р%, а в каждом следующем
месяце уменьшается в 2 раза.
34. В первом месяце ежемесячная процентная ставка равна р%, а в
каждый следующий месяц увеличивается на 0,1%.
35. В первый год эксплуатации стоимость оборудования снижается
на T руб., а в каждый следующий год снижение стоимости
уменьшается на р% (относительно предыдущего года).

9
36. В первый месяц доход по ценным бумагам составляет р%, а в
каждый следующий месяц увеличивается на q%.
37. В первый день курс доллара увеличивается на р%, а затем его
рост ежедневно уменьшается на q% по сравнению c предыдущим
днем (q<<p).
38. В феврале стоимость потребительской корзины увеличится на q
%, а в каждый следующий месяц ее рост будет уменьшаться в 2
раза по сравнению с предыдущим месяцем.
39. Доля населения, занятого в промышленности, в первый
рассматриваемый год равна q%, а в каждый последующий год
увеличивается на 0,5%.
40. Пенсионные отчисления в январе составляют р% заработной
платы, а затем ежемесячно увеличиваются на 0,2%.
41. Плата за коммунальные услуги в январе составляет К руб., а
затем ежемесячно увеличивается на 1%.
42. Изменение курса доллара в первый месяц составляет р%, а в
каждый последующий месяц увеличивается на q%.
43. Естественная убыль в октябре составляет р%, а в каждый
последующий месяц увеличивается по сравнению с предыдущим в
2 раза.
44. Дневное увеличение количества деталей первого вида
постоянно и равно Р, а дневное увеличение количества деталей
второго вида возрастает каждый день на q% (его начальное
значение равно Т).
45. В первый день после установленной даты пени равны р%, а в
каждый последующий день увеличиваются на q% (q <<p).
46. В первый год добыча нефти увеличивается на Р, во второйна Р2,
в третийна Р3, ..., в десятыйна Р10 млн т а затем ежегодно
уменьшается на h%.
47. В первый год увеличение продолжительности жизни за счет
улучшения медицинского обслуживания равно р%, а затем эта
величина (увеличение) ежегодно уменьшается в 2 раза.
48. Увеличение дохода в первые М лет не является постоянным, а
ежегодно уменьшается на q% (q не равно р). Величина увеличения
в первый год известна и равна В.
49. В первый год длина шоссейных дорог увеличивается на В, во
второйна В/2, в третийна В/3, ..., в N-йна В/10 км.

10
50. В первый год предполагается снижение числа заболеваний за
счет профилактики на р%, в каждый последующий год эта величина
(снижение) возрастает на 0,1%.
51. В первый год увеличение численности населения равно b%, в
последующие годы эта величина (процентное увеличение)
уменьшается на % (ежегодно).
52. Начальное значение рождаемости равно р%, ежегодно эта
величина уменьшается на 0,1%.
53. В первый год рост населения равен р%, затем ежегодно эта
величина уменьшается в 2 раза.
54. В первый месяц изменение курса доллара равно q%, затем
ежемесячно величина изменения уменьшается на 0,1%.
55. В первый месяц уменьшение стоимости за счет
совершенствования технологии составит Р, во второйР/2, в
десятыйР/10 руб..
56. В первый год длина шоссейных дорог увеличивается на В, во
второйна В/2, в третийна В/3, ..., в М-йна В/М км.
57. Дополнительно вывести аналогичные данные при условии, что
урожайность пшеницы уменьшилась на р%, а урожайность ржи
увеличилась на С ц.
58. В первый год уменьшение урожайности р%, а затем эта
величина (уменьшение урожайности) увеличивается на 0,5%
ежегодно.
59. В первые сутки изымается Т кг вещества, во
вторые2*Т кг,..., в М-еМ*Т кг.
60. Если на берегу будет построено промышленное предприятие, то
величина ежегодного уменьшения объема воды в озере увеличится
на q%. Вывести объем воды в озере через 1, 2,...,М лет в случае
наличия и отсутствия предприятия.
61. В первый год стоимость электроэнергии увеличивается на р%, а
затем эта величина (увеличение стоимости) уменьшается ежегодно
на 0,5%.
62. При увеличении количества товара на 5 кг оптовая стоимость за
1 кг уменьшается на 5%.

11
1.3. Накопление суммарных значений
63. Клиент переводит на банковский счет в начале каждого месяца
А руб., процентная ежемесячная ставка р%. Вычислить, сколько
денег будет на счете на конец N-го месяца накопления.
64. Клиент положил в банк (однократно) А руб. и дал поручение
перечислять в начале каждого месяца В руб. на другой счет. На
оставшуюся сумму в конце каждого месяца производится
начисление р%. Определить сумму, хранящуюся на счете в конце
М-го месяца, и сумму начисленных процентов за этот период в
предположении, что АМВ.
65. Начиная с января, на счет клиента в начале месяца переводится
Z руб. (заработная плата) и снимается К руб. (коммунальные
услуги). В конце месяца производится начисление р% от суммы,
хранящейся на счете. Вычислить сумму денег, начисляемых как
проценты в течение года.
66. Заработная плата служащего в январе составила Z руб..
Прогнозируемое увеличение заработной платы (по сравнению с
предыдущим месяцем) в феврале составило р%, в марте (р/2)%, в
апреле (р/3)%,..., в декабре (р/11)%. Вычислить прогнозируемую
среднюю заработную плату служащего за год.
67. Прогнозируемый спрос на некоторый товар в течение первых
N месяцев производства товара выражается формулой Т=Т0*e-Qi,
где Т0—спрос до начала производства, Q—ежемесячный
коэффициент уменьшения спроса, i—номер месяца. Вычислить
суммарный прогнозируемый спрос за N месяцев.
68. Стоимость потребительской корзины в январе составила К руб..
Согласно прогнозу, в феврале она увеличится на р% (по отношению
к предыдущему месяцу), в марте—на (р+0,1)%, в апреле—на
(р+0,2)%,..., в декабре—на (р+1)%. Вычислить среднюю
прогнозируемую стоимость потребительской корзины за год.
69. Прогнозируемая численность населения некоторого района в
течение ближайших М лет выражается формулой N= N0*e-ki, где N0
—численность населения на начало периода наблюдения, k—
коэффициент ежегодного уменьшения численности населения, i—
число лет, прошедших с начала наблюдения. Вычислить среднее

12
ежегодное уменьшение численности населения за
рассматриваемый период.
70. А руб.—начальная стоимость оборудования. За первый год
эксплуатации его стоимость (вследствие амортизации) уменьшилась
на В руб., за второй год—на В/2 руб., за третий год—на В/3 руб.,
и т. д. Вычислить среднюю стоимость оборудования за N лет
эксплуатации. Предполагается, что А>BN.
71. Ежемесячная зарплата служащего составляет Z руб.. В январе
он перечислил на счет в банке половину зарплаты, в феврале—одну
треть, в марте—одну четверть, и т.д. Ежемесячная ставка банка
равна р%. Вычислить сумму, накопленную на счете к концу года.
72. Себестоимость товара на момент начала его производства
равна С руб.. Предполагается, что за первый месяц она уменьшится
на р% , за второй месяц—на (р/2)% (по сравнению с предыдущим
месяцем), за третий месяц—на (р/3)%, и т. д. Вычислить среднюю
прогнозируемую себестоимость товара за N месяцев.
73. Начальный вклад клиента составил А руб.. В первый месяц
накопления ставка по вкладу составила р%, в каждый следующий
месяц она будет увеличиваться на q%. Вычислить накопленную
через N месяцев сумму.
74. Доход по ценным бумагам в первый месяц с начала выплат
составляет р% от их номинальной стоимости N. Далее доход
ежемесячно увеличивается на q%. Вычислить суммарный доход за
М месяцев.
75. На счет клиента в начале 1-го месяца поступает А руб., в начале
2-го2*А руб.,..., в начале М-гоМ*А руб.. После поступления сумма
сразу пересчитывается в доллары. Курс доллара в 1-м месяце
равен К, а затем ежемесячно изменяется на q%. Ежемесячная
банковская ставка по долларовым вкладам равна р%. Определить
сумму (в долларах), имеющуюся на счете в конце М-го месяца.
76. Ежемесячные пенсионные отчисления составляют р%
заработной платы. Определить сумму пенсионных отчислений за год
со средней заработной платы, если в январе она составляла Z руб.,
в феврале увеличилась на К %, в марте на (К+1)% (по сравнению с
предыдущим месяцем), в апрелена (К+2)%,..., в декабре на (К+10)%.
77. На овощном складе хранилось А т картофеля. В конце первого
месяца было изъято В т для продажи, в конце второго2*В т, ..., в

13
конце М-гоМ*В т. Естественная ежемесячная убыль (вследствие
гниения и т. д. ) предполагается постоянной и равной р%.
Определить количество картофеля на складе на начало (М+1)-го
месяца. Считать, что АМВ.
78. В первый год эксплуатации нефтяная скважина дала М млн т
нефти. Предполагается, что во второй год добыча нефти будет
увеличится на р%, в третийна (р+10)% (по сравнению с предыдущим
годом), в N-й на (р+10*(N-2))%. Определить среднегодовую добычу
нефти за N лет эксплуатации.
79. Средняя продолжительность жизни населения некоторой страны
составляет А лет. Прогнозируется ее увеличение на р% ежегодно за
счет улучшения медицинского обслуживания и уменьшение на Q лет
ежегодно вследствие ухудшения экологии. Определить среднюю
продолжительность жизни через М лет, а также среднегодовое
увеличение продолжительности жизни за М лет.
80. Доход предприятия в первый год его существования составил
А у. е. Предполагается, что в течение следующих М лет доход будет
увеличиваться на В у.е. ежегодно за счет экономии материалов и на
р% ежегодно за счет использования новых технологий. Определить
суммарный доход предприятия за М лет его существования.
81. Пусть в некоторой стране А человек страдает некоторым
заболеванием. Предполагается снижение этого числа на р% в
результате профилактики заболевания и на Q человек за счет
применения новых методов лечения. Вывести прогнозируемое число
больных через М лет, а также среднегодовое количество больных за
указанный период.
82. Заработная плата специалиста составляет А руб., курс доллара
В руб.. Предполагается ежемесячное увеличение заработной платы
в рублях на (р+К)% (по отношению к заработной плате предыдущего
месяца, Кномер текущего месяца) и прогнозируется изменение
курса доллара на q%. Вывести среднюю величину заработной платы
специалиста в долларовом эквиваленте за ближайшие шесть
месяцев.
83. Начальная стоимость продукта равна А руб.. Предполагается
ежемесячное уменьшение этой стоимости в результате

14
совершенствования технологии на Р руб. и ежемесячное
увеличение на q% за счет роста стоимости электроэнергии. Вывести
среднюю стоимость продукта за 10 месяцев.
84. Население страны составляет А млн чел. В первый год
наблюдений прогнозируется рождаемость р%, во второй(р+Q)%, в
третий(р+2Q)%,..., в М-й(р+(М-1)Q)%. Вычислить средний ежегодный
прирост населения за ближайшие М лет.
85. Длина шоссейных дорог некоторого района составляет А км. За
первый от рассматриваемого момента год планируется их
увеличение на р%, за второй годна (р+10)%,..., за 5-й годна (р+40)%.
Для данной местности считается необходимым иметь один пост ГАИ
на С км шоссейных дорог. Определить необходимое число постов
ГАИ в районе через M лет.
86. Урожайность пшеницы в год разработки целинных земель
составила А цга, затраты на ее получениеВ руб..га. Существует
прогноз, что в последующие годы урожайность будет уменьшаться
на р% в год при увеличении затрат на q%. Вывести среднюю
себестоимость 1 ц пшеницы за последующие М лет.
87. Резервуар содержит Р кг летучего вещества. В начале каждых
суток из него изымается Т кг вещества. За сутки улетучивается q%
вещества. Вывести массу вещества в резервуаре на конец М-х суток
и среднесуточное уменьшение массы вещества за этот период.
Предполагается, что РМТ.
88. Озеро содержит А км3 воды. Ежегодно объем воды уменьшается
на р%. Если построить на берегу промышленное предприятие, то
это приведет к дополнительному ежегодному уменьшению объема
на В км3. Вычислить объем воды в озере через М лет при условии
существования предприятия.
89. 1 кВт электроэнергии стоит А руб., средняя семья из четырех
человек потребляет в рассматриваемый месяц 200 кВт
электроэнергии. В ближайшие М месяцев предполагается
ежемесячный рост стоимости электроэнергии на р% и потребления
электроэнергии на 50 кВт. Вычислить средние (в месяц) затраты
семьи на электроэнергию за указанный период.

15
90. Фирма открыла валютный счет в банке под р% годовых.
Начальный вклад равен А . Ежегодно фирма перечисляет на счет В .
Определить накопленную сумму через М лет накопления.
91. Состояние шоссейных дорог и автотранспорта некоторой страны
таково, что прогноз ежегодного числа Р автотранспортных аварий с
тяжелыми последствиями после 1999 г. задается формулой:
Р=Т*(К-1999), где Т—заданное значение, Крассматриваемый год.
Вычислить прогнозируемое суммарное число рассматриваемых
аварий за период с 2000 по 2005 гг.
92. Прогнозируемая численность T населения некоторой страны в
течение ближайших М лет выражается формулой
T=T0* ,
2
k
(1  )
100 2
где Т0численность населения на начало периода наблюдения,
kчисло лет, прошедших с начала наблюдения. Вычислить
среднее ежегодное уменьшение численности населения за
рассматриваемый период.

2. ИТЕРАЦИОННЫЕ ЦИКЛЫ
93. Аначальная стоимость оборудования. В первый год
эксплуатации стоимость оборудования снижается на В руб., а в
каждый следующий год снижение стоимости уменьшается на р%
(относительно предыдущего года). Определить, через сколько лет
стоимость оборудования станет меньше А2. Вычисления досрочно
прекратить, если срок эксплуатации превысит N лет
94. Начиная с января, на счет клиента в начале месяца переводится
Z руб. (заработная плата) и снимается К руб. (коммунальные
услуги); в конце месяца производится начисление р% от
накопленной суммы. Последовательно месяц за месяцем суммируя
начисляемые проценты, определить их сумму за год. Вычисления
досрочно прекратить, если в каком-либо месяце эта сумма превысит
значение А.
95. Средняя заработная плата в январе составила Z руб., а
стоимость потребительской корзины—К руб. Предполагается, что
ежемесячный рост заработной платы составит р%, а

16
потребительской корзины q%. Последовательно выводить
прогнозируемую разность между средней заработной платой и
стоимостью потребительской корзины в феврале—декабре.
Вычисления досрочно прекратить, если разность станет
отрицательной.
96. Клиент переводит на банковский счет в начале каждого месяца
А руб., процентная ежемесячная ставка р%. Определить, через
сколько месяцев накопленная сумма превысит В руб., при условии,
что начальный вклад равен нулю. После N-го месяца вычисления
прекратить, даже если требуемая сумма не будет получена
97. Клиент положил в банк (однократно) А руб. и дал поручение
перечислять в начале каждого месяца В руб. на другой счет. На
оставшуюся сумму в конце каждого месяца производится
начисление р%. Определить, через сколько месяцев отчисления
будут невозможны (т. е. остаток вклада станет меньше В). Вывести
также остаток вклада. После рассмотрения М-го месяца вычисления
прекратить, даже если остаток будет больше В.
98. В стране с населением N млн человек в ближайшие М лет
прогнозируется средний ежегодный прирост населения р%. Доля
населения, занятого в промышленности, в данный момент равна А
% и предполагается ее ежегодное увеличение на q%. Определить,
через сколько лет численность населения, занятого в
промышленности, превысит С млн человек. Вычисления досрочно
прекратить, если превышение не будет достигнуто через М лет.
99. К началу октября на овощном складе хранилось А т картофеля.
Ежемесячно должно изыматься В т для продажи. Естественная
ежемесячная убыль (вследствие гниения и т.д.) предполагается
постоянной и равной р%. Определить, на сколько месяцев хватит
запаса картофеля (запас считается исчерпанным, если оставшееся
количество меньше В). Вычисления досрочно прекратить после
рассмотрения десятого месяца хранения (июля)
100. А руб.—начальная стоимость оборудования. За первый год
эксплуатации его стоимость (вследствие амортизации)
уменьшилась на В руб., за второй год—на В/2 руб., за третий год—
на В/3 руб., и т. д. Последовательно вычисляя стоимость

17
оборудования через 1, 2, 3,... лет эксплуатации, определить, через
сколько лет она станет меньше заданного значения С.
Рассматривать не более чем М лет эксплуатации.

18
101.
102. Ежемесячная зарплата служащего составляет Z руб.. В январе
он перечислил на счет в банке половину зарплаты, в феврале —
одну треть, в марте —одну четверть, и т. д. Ежемесячная ставка
банка равна р%. Определить, через сколько месяцев накопленная
сумма превысит заданное значение С. Рассматривать срок не более
года.
103. Себестоимость товара на момент начала его производства
равна С руб.. Предполагается, что за первый месяц производства
она уменьшится на р% ,за второй—на (р/2)% (по сравнению с
предыдущим месяцем), за третий—на (р/3)%, и т. д. Определить,
через сколько месяцев себестоимость станет меньше заданного
значения С. Рассматривать срок не более года.
104. Начальный вклад клиента составил А руб.. В первый месяц
накопления ставка по вкладу составила р%, в каждый следующий
месяц она будет увеличиваться на q%. Определить, через сколько
месяцев накопленная сумма превысит удвоенное значение
начального вклада. Рассматривать срок не более М месяцев.
105. На счет клиента в начале 1-го месяца поступает А руб., в начале
2-го2*А руб.,..., в начале М-гоМ*А руб.,...После поступления сумма
сразу пересчитывается в доллары. Курс доллара в 1-м месяце равен
К, а затем ежемесячно изменяется на q%. Ежемесячная банковская
ставка по долларовым вкладам равна р%. Определить, через
сколько месяцев накопленная сумма (в долларах) превысит
заданное значение С. Рассматривать срок не более года.
106. На овощном складе хранилось А т картофеля. В конце первого
месяца было изъято В т для продажи, в конце второго1,1В т, ..., в
конце М-го(1+(М-1)10)В т. Естественная ежемесячная убыль
(вследствие гниения и т. д. ) предполагается постоянной и равной р
%. Определить, через сколько месяцев количество картофеля на
складе станет меньше заданного значения С. Рассматривать срок не
более 10 месяцев.
107. В первый год эксплуатации нефтяная скважина дала М млн т
нефти. Предполагается, что во второй год добыча нефти будет
увеличится на р%, в третийна (р+10)% (по сравнению с предыдущим
годом), ..., в N-йна (р+10*(N-2))%. Определить, через сколько лет

19
добыча превысит заданное значение С. Рассматривать срок не
более 20 лет.
108. Средняя продолжительность жизни населения некоторой страны
составляет А лет. Прогнозируется ее увеличение на р% ежегодно в
результате улучшения медицинского обслуживания и увеличение на
Q лет ежегодно вследствие улучшения экологии. Определить, через
сколько лет средняя продолжительность жизни превысит 60 лет.
Рассматривать срок не более 30 лет.
109. Доход предприятия в первый год его существования составил
А у. е. Предполагается, что доход будет увеличиваться на В у.е.
ежегодно за счет экономии материалов и на р% ежегодно за счет
использования новых технологий. Определить, через сколько лет
доход превысит заданное значение С. Прогноз справедлив в
течение не более чем 10 лет.
110. Пусть в некоторой стране А человек страдает некоторым
заболеванием. Предполагается снижение этого числа на р% за счет
профилактики заболевания и на Q человек в результате применения
новых методов лечения. Определить, через сколько лет число
больных уменьшится в 2 раза. Рассматривать срок не более чем 20
лет.
111. Заработная плата специалиста составляет А руб., курс доллара
В руб. Предполагается ежемесячное увеличение заработной платы
в рублях на (р+К)% (по отношению к заработной плате предыдущего
месяца, Кномер текущего месяца) и прогнозируется изменение
курса доллара на q%. Определить, через сколько месяцев
заработная плата специалиста в долларовом эквиваленте
увеличится на 50%. Рассматривать срок не более года.
112. Начальная стоимость продукта равна А руб.. Предполагается
ежемесячное уменьшение этой стоимости за счет
совершенствования технологии на Р руб. и ежемесячное
уменьшение на Q% за счет снижения стоимости материалов.
Определить, через сколько месяцев стоимость уменьшится более
чем на 20%. Рассматривать срок не более года.
113. Население страны составляет А млн чел. В первый год
наблюдений прогнозируется рождаемость р% от общей численности
населения, во второй(р+Q)%, в третий(р+2Q)%,..., в М-й(р+(М-1)Q)
%... Определить, через сколько лет число рожденных за год

20
превысит заданное значение С. Рассматривать срок не более 50
лет.
114. Длина шоссейных дорог некоторого района составляет А км. За
первый от рассматриваемого момента год планируется их
увеличение на р%, за второй годна (р+10)%,..., за М-й годна (р+10М)
%... Определить, через сколько лет длина шоссейных дорог
превысит значение С. Рассматривать срок не более 10 лет.
115. Урожайность пшеницы в год начала разработки целинных
земель составила А цга, затраты на ее получениеВ руб.га.
Существует прогноз, что в последующие годы урожайность будет
уменьшаться на Р ц/га в год при увеличении затрат на q%.
Определить, через сколько лет себестоимость пшеницы увеличится
на 50%. Рассматривать срок не более 20 лет.
116. Резервуар содержит Р кг летучего вещества. В начале каждых
суток из него изымается Т кг вещества. За сутки улетучивается q%
вещества. Определить, через сколько суток масса вещества в
резервуаре уменьшится более чем в 10 раз. Рассматривать срок не
более 30 суток.
117. Озеро содержит А км3
воды. Ежегодно объем воды уменьшается на р%. Если построить на
берегу промышленное предприятие, то это приведет к
дополнительному ежегодному уменьшению на В км3. Определить,
через сколько лет, при условии существования предприятия, объем
воды в озере уменьшится в 2 раза. Рассматривать срок не более 50
лет.
118. 1 кВт электроэнергии стоит А руб., средняя семья из четырех
человек потребляет в рассматриваемый месяц 200 кBт
электроэнергии. В ближайшие 12 месяцев предполагается
ежемесячный рост стоимости электроэнергии на р% и потребления
электроэнергии на 50 квт. Определить, через сколько месяцев
средние (в месяц) затраты семьи на электроэнергию превысят
заданное значение С.
119. Фирма желает открыть валютный счет в коммерческом банке под
р% годовых и накопить на нем необходимую сумму С для
модернизации оборудования. Ежегодные отчисления на счет
равны В. Последовательно год за годом суммируя поступающие

21
отчисления и накопленные %ы, определить, через сколько лет будет
получена необходимая сумма. Вычисления прекратить, если срок
накопления превысит М лет.
120. Состояние шоссейных дорог и автотранспорта некоторой страны
таково, что прогноз ежегодного числа Р автотранспортных аварий с
тяжелыми последствиями после 1999 г. задается формулой:
Р=Т*(К-1999), где Т-заданное значение, Крассматриваемый год.
Определить, через сколько лет количество таких аварий превысит
значение М. Прогноз справедлив только на десятилетний срок.
121. Прогнозируемая численность населения некоторой страны в
течение ближайших М лет выражается формулой
T=T0* ,
2

(1  Mk 2 )

где Т0численность населения на начало периода наблюдения,


kчисло лет, прошедших с начала наблюдения. Определить, через
сколько лет численность населения станет меньше заданной
величины Р.
122. В первый день практики ученик изготовил А деталей первого
вида и В деталей второго вида. В каждый последующий день
количество изготовленных деталей первого вида увеличивалось на
Р деталей, а количество деталей второго видана Т% (по сравнению
с предыдущим днем). Определить, через сколько дней суммарное
значение деталей (первого и второго вида) превысит заданное
значение С. Практика длится не более 10 дней.
123. Население некоторого района составляет М тыс. чел., а длина
шоссейных дорог районаН км. Существует прогноз (справедливый
не более чем на ближайшие 10 лет), согласно которому население
будет уменьшаться на р% ежегодно, а длина шоссейных дорог
увеличиваться на В км ежегодно. Определить, через сколько лет
значение длины шоссейных дорог на 1 тыс. жителей в данном
районе достигнет нормативного значения N.

3. ПРОЦЕДУРЫ-ПАРАМЕТРЫ. ОБРАБОТКА МАССИВОВ


Эти задания направлены на отработку двух приемов
программирования: использование параметров-процедур и

22
применение процедуры, имеющей фактическим параметром
одномерный массив, для обработки некоторой части матрицы
(строки, столбца, совокупности строк или столбцов). Кроме того,
эти задачи удобно использовать для обучения работе с
массивами переменной длины.
Требуется разработать процедуру обработки одномерного
массива, имеющую параметр-функцию f и не использующую
глобальных переменных ("чистую"), а затем предлагается
составить программу (одну!), в которой разработанная
процедура последовательно применяется к каждой строке
матрицы, к каждому столбцу матрицы, к совокупности первых L
(L задается вводом) строк, к совокупности первых L столбцов, к
всей матрице (всего пять способов применения). Конечно, по
желанию преподавателя, можно использовать лишь некоторые
из пяти возможных способов применения процедуры, но не
менее двух, иначе можно обойтись без параметра-процедуры.
Функции-фактические параметры для каждого варианта
применения процедуры приведены в таблице1. Намеренно взяты
функции, которые различно реализованы в известных системах
программирования для алгоритмических языков Паскаль, Си,
Фортран.
Таблица 1
Применит Каж Кажд Совок Совок Всей
ь до ом упно упно матрице
процеду й у сти L сти
ру к стр стол стро L
ок бцу к стол
е бцов
Функция- arccos x,
фактиче x3 3 x ln x tgx если х1;
ский иначе 0
парамет
р

Разработать процедуру, которая


124. Для массива С находит наименьшее среди положительных
значений f(Ci ) и наибольшее среди отрицательных значений f(Ci).

23
125. Для массива С определяет количество положительных значений
f(Ci ) и количество отрицательных значений f(Ci ).
126. Для массива С определяет произведение значений f(Ci ),
попавших в заданный диапазон.
127. Для двух массивов В и С одинаковой длины определяет
максимальное значение частного f(Bi )/ f(Ci ).
128. Для заданного массива Р заменяет нулями те элементы, для
которых f(Рi) меньше заданной величины, и считает число таких
замен.
129. Для заданного массива С формирует массив из элементов, для
которых значение f(Сi) попадает на заданный отрезок.
130. Находит номер первого от начала массива Т элемента, для
которого f(Тi) больше заданной величины.
131. Определяет максимальное и минимальное значение абсолютной
величины f(Хi), где Х—заданный массив.
132. Для элементов двух массивов Р и В разной длины определяет
максимальное значение f(Нi), где в качестве Нi выступают элементы
из Р и В.
133. Из двух заданных массивов В и С одинаковой длины строит
новый массив Т по правилу: .
 f ( Bi ) Bi  Ci
Ti  
 f ( Ci ) Bi  Ci
134. Для заданного целочисленного массива С подсчитывает
количество случаев равенства f(Сi) заданной величине.
135. Из элементов двух заданных массивов С и Т (не обязательно
одинаковой длины), для которых значение функции f больше
некоторой величины, формирует новый массив В и вычисляет
произведение элементов найденного массива.
136. Для заданного массива С определяет диапазон значений f(Сi).
137. Для двух
массивов В и С разной длины определяет, на каком элементе
массива С f(Сi) максимально и на каком элементе массива В f(Вi)
минимально, а также произведение найденных элементов.

24
138. Для массива Т формирует массив из индексов элементов
массива Т, для которых f(Тi) больше заданной величины.
139. Для двух массивов В и С одинаковой длины формирует массив
Т, по длине совпадающий с исходными, каждый элемент которого Тi
равен сумме Вi и Сi в случае, если f(Сi) > f(Вi) > 0. Если массив Т по
длине получается меньше исходных, то он дополняется нулями.
140. Для двух заданных массивов К и М одинаковой длины
формирует третий массив L из элементов Мi, превышающих
значение f(Кi). Если массив L по длине получается меньше
исходных, то он дополняется нулями.
141. Для заданного массива Р заменяет нулями все элементы, для
которых f(Рi) больше заданного значения, и единицами все
остальные элементы.
142. Для заданного массива Т переставляет в конец массива
элементы, для которых f(Тi) больше заданной величины.
143. Для заданных массивов В и С одинаковой длины формирует
массив из индексов элементов, для которых f(Bi) > f(Сi).
144. В заданном массиве С из n элементов заменяет нулями
элементы, не превышающие значения
1 n
 f ( Ci )
B i 1
где В—некоторая величина.
145. Для двух заданных массивов С и В (не обязательно одинаковой
длины) находит все элементы, для которых значения функции f от
них меньше заданной величины.
146. Для двух заданных массивов С и В (не обязательно одинаковой
длины) уменьшает значения всех положительных элементов
массива B на величину , где M—количество элементов в
M
5
 f C 
i 1
i

массиве С.
147. Изменяет все элементы заданного массива С, кроме первого, по
правилу .
i
Ci  Ci   f  Ck 
k 1

25
148. Для двух заданных массивов Р и Т одинаковой длины n
уменьшает элементы массива Р на величину .
n
 f  Pi  Ti 
i 1
149. Заменяет нулями все элементы исходного массива Х, для
которых выполняется условие f(Хi)<Хi , и подсчитывает число таких
замен.
150. Для заданного массива Х вычисляет сумму Р значений функции
f только для положительных элементов массива Х, а также
вычисляет .
B
P
151. Для заданных массивов Р и В одинаковой длины n вычисляет
значение
.
n n
 f ( pi ) /  f ( Bi )
i 1 i 1
152. Для двух заданных массивов С и М одинаковой длины из
элементов массива Mi, превышающих f(Сi), формирует массив К.
153. Для заданного массива С определяет отрезок, на который
попадают все значения f(Сi), и заменяет значения всех элементов
массива В, не попадающих на этот отрезок, нулями.

4. ЭКСТРЕМАЛЬНЫЕ ЗАДАЧИ ГЕОМЕТРИЧЕСКОГО


СОДЕРЖАНИЯ
На плоскости имеется множество Т точек, заданных своими
координатами. Рассматриваются всевозможные подмножества
множества Т из заданного числа точек (пары, тройки точек,
одиночные точки). Требуется выбрать подмножество,
обладающее некоторым экстремальным свойством.
154. Рассматривая точки множества Т как концы отрезков, из
отрезков, параллельных заданному отрезку, выбрать имеющий
максимальную длину.
155. Рассматривая точки множества Т как концы отрезков, из
отрезков, перпендикулярных заданному направлению, выбрать
отрезок, расстояние от центра которого до начала координат было
максимально.

26
156. Рассматривая точки множества Т как возможные положения
центра круга радиуса R, выбрать из кругов, которые находятся в
заданном квадранте, содержащий наибольшее число точек
множества Т.
157. Рассматривая точки множества Т как возможные положения
центра круга радиуса R, выбрать такую точку, чтобы круг содержал
наибольшее число точек множества Т, не принадлежащих
заданному прямоугольнику со сторонами, параллельными
координатным осям.
158. Кроме точек множества Т, задана еще одна точка. Среди пар
точек множества Т, расстояние между которыми больше заданной
величины, выбрать такую пару, которая вместе с заданной точкой
образует треугольник минимальной площади.
159. Кроме точек множества Т, даны круг и точка, принадлежащая
этому кругу. Считая заданную точку вершиной некоторого
треугольника и рассматривая точки множества Т в качестве других
вершин, среди треугольников, принадлежащих заданному кругу,
выбрать имеющий максимальный периметр.
160. Рассматривая точки множества Т как возможные положения
центра круга радиуса R, из кругов, имеющих непустое пересечение с
заданным кругом, выбрать тот, который содержит наибольшее число
точек множества Т.
161. Задан отрезок. Считая его концы вершинами треугольника и
рассматривая точки множества Т в качестве третьей вершины, найти
треугольник, содержащий наибольшее число точек множества Т.
162. Задан отрезок. Считая его концы вершинами треугольника и
рассматривая точки множества Т в качестве третьей вершины, из
треугольников, принадлежащих заданному квадрату со сторонами,
параллельными координатным осям, выбрать треугольник,
имеющий максимальный периметр.
163. Задан отрезок. Считая его концы вершинами треугольника,
выбрать третью вершину среди точек множества Т так, чтобы
треугольник имел максимальную площадь среди всех
треугольников, содержащих не более чем М точек множества Т.
164. Рассматривая точки множества Т как диагональные вершины
прямоугольника (со сторонами, параллельными координатным

27
осям), из прямоугольников, лежащих внутри заданного круга,
выбрать прямоугольник максимальной площади.
165. Рассматривая точки множества Т как диагональные вершины
прямоугольника (со сторонами, параллельными координатным
осям), из прямоугольников, содержащих заданный треугольник,
выбрать прямоугольник с минимальным периметром.
166. Через две точки множества Т провести прямую так, чтобы
разность между количествами точек, лежащими по разные стороны
от прямой была минимальна.
167. Рассматривая всевозможные прямые, проходящие по крайней
мере через две точки множества Т, выбрать такую прямую, для
которой максимально число точек, находящихся от прямой на
расстоянии, не превышающем заданного значения С.
168. Кроме точек множества Т, задана еще одна точка.
Рассматриваются треугольники, одной вершиной которых является
заданная точка, а две другие вершины берутся из множества Т.
Найти треугольник, для которого минимальна разность между
числами точек множества Т, находящимися внутри треугольника и
вне его.
169. Кроме точек множества Т, задана еще одна точка.
Рассматриваются треугольники, одной вершиной которых является
заданная точка, а две другие вершины берутся из множества Т.
Среди треугольников, содержащих внутри себя не менее М точек
множества Т, найти треугольник минимальной площади.
170. Рассматривая точки множества Т как диагональные вершины
прямоугольника (со сторонами, параллельными координатным
осям), из прямоугольников, содержащих внутри себя не менее М
точек множества Т, выбрать прямоугольник с минимальным
периметром.
171. Рассматривая точки множества Т как диагональные вершины
прямоугольника (со сторонами, параллельными координатным
осям), из прямоугольников, длины ребер которых меньше заданной
величины, выбрать прямоугольник, содержащий наибольшее число
точек множества Т.
172. Рассматривая точки множества Т как возможные положения
центра круга радиуса R, выбрать из кругов, содержащих не менее М
точек множества Т, круг минимального радиуса

28
173. Рассматривая точки множества Т как вершины треугольников,
среди треугольников, содержащих заданный квадрат (со сторонами,
параллельными координатным осям), найти треугольник
минимальной площади.
174. Рассматривая точки множества Т как вершины треугольников,
среди треугольников, периметр которых превышает заданное
значение, найти треугольник, вне которого лежит максимальное
число точек множества Т.
175. Рассматривая точки множества Т как вершины треугольников,
среди треугольников, принадлежащих заданному прямоугольнику со
сторонами, параллельными координат осям, выбрать треугольник
максимальной площади.
176. Рассматривая точки множества Т как вершины треугольников,
среди треугольников, лежащих внутри заданного эллипса (с осями,
параллельными координатным осям),выбрать треугольник
максимальной площади.
177. Рассматривая точки множества Т как вершины треугольников,
среди треугольников, площадь которых превышает заданную
величину, найти треугольник с минимальным периметром.
178. Рассматривая точки множества Т как вершины треугольников,
среди треугольников, среди равнобедренных треугольников найти
треугольник максимальной площади.
179. Рассматривая точки множества Т как вершины треугольников,
среди треугольников, одна из сторон которых параллельна заданной
прямой, найти треугольник с максимальным периметром.
180. Рассматривая всевозможные тройки точек множества Т, не
лежащих на одной прямой, и определяя радиус проходящей через
них окружности, найти окружность максимального радиуса.
181. Рассматривая точки множества Т как вершины треугольников,
среди треугольников, выбрать треугольник с минимальной
разностью длины описанной окружности и периметра треугольника.
182. Рассматривая всевозможные тройки точек множества Т, не
лежащих на одной прямой, и определяя параметры проходящей
через них окружности, найти окружность, содержащую наибольшее
число точек множества Т.

29
183. Рассматривая всевозможные тройки точек множества Т, не
лежащих на одной прямой, и определяя параметры проходящей
через них окружности, среди окружностей, для которых расстояние
от центра до начала координат не превышает заданной величины,
найти окружность максимального радиуса.

5. ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ

5.1. Обработка последовательностей символов


Дан текст. Способ описания текста (массив символов, строка,
массив строк, текстовый файл) зависит от языка
программирования и целей обучения. Текст разбит на слова.
Предполагается, что слово—это группа символов, не
содержащая пробелов и отделенная пробелами от других слов.
При решении этих задач не рекомендуется использовать
стандартные процедуры работы со строками.
184. Определить, содержит ли текст символы, отличные от букв и
пробелов.
185. Все символы, предшествующие первому вхождению символа *,
заменить на *.
186. Все символы, стоящие после последней точки, заменить на
пробелы.
187. Выяснить, является ли текст идентификатором.
188. Выяснить, является ли текст десятичной записью целого числа.
189. Текст представляет собой запись натурального числа N.
Получить символьное представление N в виде последовательности
цифр и пробелов, отделяющих группы по три цифры, начиная
справа. Например, если N=1753967, то должно получиться1 753 967.
190. Изменить текст так, чтобы вместо малых букв стояли
соответствующие большие буквы, а вместо больших—малые.
191. Если текст содержит только малые латинские буквы,
определить, упорядочен ли он по алфавиту.
192. Каждую группу символов one заменить на three.
193. Первое вхождение в текст группы символов one заменить на
three.
194. После каждой точки вставить пробел, если он отсутствует.
195. Удалить из текста все цифры.

30
196. Изменить текст так, чтобы слова разделялись ровно одним
пробелом.
197. Определить, есть ли в тексте слова, начинающиеся с заданного
символа.
198. Вывести на экран первое слово текста, начинающееся с буквы А.
199. Определить, содержит ли букву А первое слово заданного
текста.
200. Определить, сколько раз входит в последнее слово текста
заданный символ.
201. Определить, сколько слов оканчивается на заданный символ.
202. Вывести на экран первое слово текста, оканчивающееся на
заданный символ.
203. В тех словах, которые оканчиваются сочетанием букв ed, заме-
нить это окончание на ing.
204. Определить число вхождений в текст заданного слова.
205. Вывести на экран первое слово текста, если оно отлично от
заданного слова.
206. Каждое слово one заменить на three.
207. Первое вхождение слова one заменить на three.
208. Во всех словах, начинающихся с f, заменить f на сочетание ph.
209. Изменить текст, вставив после каждого слова еще один пробел.
210. Вычислить, сколько слов встречается в тексте до первой точки.
211. Удалить из текста все символы, отличные от цифр и пробелов.
212. Подсчитать количество символов, отличных от букв и пробелов,
встретившихся в тексте до первой точки.
213. Вычислить число слов в тексте и вывести их по одному в каждой
строке.

5.2. Программирование процедур в задачах обработки текста


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

31
214. Определить, сколько раз в последовательности А встречается
буква N и сколько раз в последовательности В встречается цифра 9.
Для подсчета числа повторений заданного символа в
последовательности символов использовать самостоятельно
разработанную процедуру.
215. Заменить в последовательности А все символы * на пробелы, а
в последовательности В – все точки на запятые.
Использовать самостоятельно разработанную процедуру для
замены в последовательности символов заданного символа на
другой заданный символ.
216. Определить, содержит ли каждая из трех последовательностей
А, В и С символы, отличные от букв латинского алфавита.
Для проверки вхождения в произвольную последовательность
символов, отличных от букв латинского
алфавита,.использовать самостоятельно разработанную
процедуру.
217. В последовательности А каждую группу символов one заменить
на two, а в последовательности В каждую группу символов nine
заменить на five.
Для замены в произвольной последовательности заданной
группы символов на другую заданную группу символов такой же
длины использовать самостоятельно разработанную
процедуру.
218. Для заданной последовательности проверить:
·1 является ли первый символ последовательности буквой s;
·2 является ли последний символ последовательности буквой z
·3 встречается ли среди остальных символов последовательности
латинская буква о.
Использовать самостоятельно разработанную процедуру,
проверяющую, стоит ли в заданной позиции
последовательности заданный символ.
219. Определить номер первого вхождения буквы z в каждую из
последовательностей А, В, С.
Для определения номера первого вхождения заданного символа в
заданную последовательность использовать самостоятельно
разработанную процедуру.

32
220. Выяснить, является ли каждая из последовательностей А, В, С
идентификатором.
Использовать самостоятельно разработанную процедуру
проверки, является ли заданная последовательность
идентификатором.
221. Вычислить количество слов в каждой из
последовательностей А, В, С.
Для вычисления количества слов в произвольной
последовательности использовать самостоятельно
разработанную процедуру.
222. Определить, сколько слов в последовательности А оканчивается
на букву N и сколько слов в последовательности В оканчивается на
букву Y.
Для подсчета в произвольной последовательности числа слов,
оканчивающихся на заданный символ, разработать процедуру.

223. Проверить, является ли каждая из последовательностей А, В, С


десятичной записью целого числа.
Использовать самостоятельно разработанную процедуру,
проверяющую, является ли заданная последовательность
записью десятичного числа.

224. Из последовательностей А, В, С удалить все пробелы.


Использовать самостоятельно разработанную процедуру
удаления пробелов из заданной последовательности.

225. Определить, сколько раз в последовательность А входит группа


символов one, а в последовательность В–группа символов three.
Для определения числа вхождений в последовательность
заданной группы символов использовать самостоятельно
разработанную процедуру.
226. Проверить, входит ли в последовательность А группа символов
one, а в последовательность В – группа символов three.
Для проверки вхождения в последовательность заданной группы
символов использовать самостоятельно разработанную
процедуру.

33
227. В последовательности А все символы, стоящие после последней
точки, заменить на пробелы, а в последовательности В все символы,
стоящие после последней точки, заменить на символ *.
Использовать самостоятельно разработанную процедуру,
заменяющую в последовательности все символы, стоящие
после последней точки, на заданный символ.
228. Исключить из каждой последовательности А, В, С все символы,
отличные от малых латинских букв.
Для исключения из произвольной последовательности символов,
отличных от малых латинских букв, использовать
самостоятельно разработанную процедуру.
229. Определить, сколько раз в последовательность А входит слово
one, а в последовательность В–слово three.
Для определения числа вхождений в последовательность
заданного слова использовать самостоятельно
разработанную процедуру.
230. Проверить, входит ли в последовательность А слово one, а в
последовательность В –слово three.
Для проверки вхождения в последовательность заданного слова
использовать самостоятельно разработанную процедуру.
231. Определить, сколько слов в последовательности А начинается с
буквы N и сколько слов в последовательности В начинается с буквы
Y.
Для подсчета в произвольной последовательности числа слов,
начинающихся с заданного символа, использовать
самостоятельно разработанную процедуру.

232. Определить, есть ли в последовательности А слова,


начинающиеся с буквы N, и есть ли в последовательности В слова,
начинающиеся с буквы Y.
Для проверки наличия в последовательности слов,
начинающихся с заданной буквы, использовать
самостоятельно разработанную процедуру.

34
233. Определить число слов, встречающихся в последовательности
А до первой точки, и число слов, встречающихся в
последовательности В до первой запятой.
Для подсчета числа слов, встречающихся в заданной
последовательности до заданного символа, использовать
самостоятельно разработанную процедуру.

234. Для каждой из последовательностей А, В, С выяснить, имеется


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

235. В каждой из последовательностей А, В, С удалить все символы,


стоящие после последней точки.
Для удаления всех символов, стоящих после последней точки, в
произвольной последовательности, использовать
самостоятельно разработанную процедуру.

236. Для каждой из последовательностей А, В, С вычислить, сколько


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

238. Для каждой последовательности, А и В, выяснить, какое из слов


–первое или последнее – имеет большую длину.
Для вычисления длин первого и последнего слов
последовательности использовать самостоятельно
разработанную процедуру.

35
239. В каждой из последовательностей А, В, С заменить круглые
скобки на соответствуюшие (открывающие или закрывающие)
квадратные.
Для замены круглых скобок на соответствущие квадратные в
произвольной последовательности использовать
самостоятельно разработанную процедуру.
240. В каждой из последовательностей А, В, С заменить малые
латинские буквы одноименными большими.
Для замены малых латинских букв одноименными большими в
произвольной последовательности использовать
самостоятельно разработанную процедуру.
241. Определить первое слово для каждой из
последовательностей А, В, С.
Для определения первого слова в произвольной
последовательности использовать самостоятельно
разработанную процедуру.
242. Определить, какая из русских гласных букв (а, е, и, о, у, э, ю, я)
чаще встречается в последовательности А.
Использовать самостоятельно разработанную процедуру
определения числа вхождений в последовательность
заданного символа.
243. В каждой из последовательностей А, В, С переставить символы
таким образом, чтобы первый символ стал последним, второй
предпоследним, и т. д.
Перестановку символов в произвольной последовательности
оформить как процедуру.

5.3. Задачи на обработку символьных данных сложной


структуры

5.3.1. Обработка студенческой ведомости


Составить программу для обработки информации о некото-
рых объектах—студентах какого-то факультета. Каждый объект
характеризуется совокупностью признаков.

36
Групп Фами- Год Оценка Оценка Оценка Сти-
а лия, рож- По по по ма- по ин- пе
имя де л физике тема- форм н-
, ни тике атике ди
отч я я
ест
во
Выбор типа исходных и выходных данных зависит от языка
программирования, программы обучения и желания обу-
чаемого. Возможно рассмотрение двух вариантов, соответст-
вующих объекту: строка и запись. Кроме того, для каждого из
этих вариантов можно рассмотреть три способа ввода ( вывода):
с клавиатуры монитора (на экран), из текстового файла на диске,
из типизированных файлов.

244. Вывести фамилии, имена и отчества всех студентов мужского


пола, старших 18 лет.
245. Вывести фамилии, имена и отчества студентов мужского пола,
не сдавших более двух экзаменов.
246. Вывести фамилии студентов женского пола, имеющих "5" по
информатике.
247. Для студентов, имеющих все отличные оценки, заменить вели-
чину стипендии на повышенную и вывести по ним всю информацию,
за исключением пола.
248. Для студентов, имеющих хотя бы одну неудовлетворительную
оценку, заменить величину стипендии на ноль. Вывести фамилии
этих студентов и их отметки по всем предметам.
249. Для студентов, имеющих "5" по физике , вывести фамилию, имя,
отчество, средний балл и стипендию.
250. Вывести фамилии, имена, отчества и отметки по физике студен-
тов, имеющих средний балл, больший чем 4,5.
251. Подсчитать число студентов, которые моложе 16 лет, и вывести
все данные о них.
252. Вывести фамилии и средние баллы студентов, имеющих "5" по
информатике.
253. Вывести фамилии студентов, имеющих все удовлетвори-
тельные оценки и не получающих стипендии.

37
254. Вывести фамилии, имена, отчества и средние баллы студентов,
не получающих стипендии.
255. Найти среднюю величину стипендии и вывести фамилии,
имена и отчества студентов, чья стипендия меньше средней
более чем на 20%.
256. Вывести фамилии студентов, пропустивших более двух экзаме-
нов.
257. Вычислить средний балл всех студентов по всем предметам.
Вывести фамилии студентов, средний балл которых больше, чем
общий средний балл.
258. Для студентов, имеющих только положительные оценки, вы-
вести фамилию, имя, отчество и стипендию.
259. Для группы ЭТ7-99 вывести фамилии студентов мужского
пола, старших 18 лет.
260. Для заданной группы вывести фамилии, имена и отчества сту-
дентов, не сдавших более двух экзаменов.
261. Для студентов группы ЭТ3-99, имеющих "5" по физике, увели-
чить величину стипендии на заданную величину и вывести все
данные о них, за исключением пола и группы.
262. Подсчитать число студентов, имеющих все отличные оценки, в
группе ЭТ5-99. Вывести фамилии, имена, отчества и величину
стипендий этих студентов.
263. Для студентов группы ЭТ5-99, имеющих хотя бы одну неудовле-
творительную оценку, заменить величину стипендии на 0. Вывести
фамилии этих студентов и их оценки по всем предметам.
264. Вывести фамилии студентов групп ЭТ9-99 и ЭТ10-99, имеющих
хотя бы одну неудовлетворительную оценку.
265. Для студентов заданной группы, имеющих средний балл, боль-
ший 4.5, вывести фамилию, имя, отчество и средний балл.
266. Для заданных трех групп подсчитать число студентов, которым
меньше 16 лет, и вывести все данные о них.
267. Для группы Эт7-99 вывести фамилии и средний балл сту-
дентов, имеющих "5" по информатике.
268. Для заданной группы вывести фамилии студентов, не полу-
чающих стипендии. Вычислить, сколько из них имеет все положи-
тельные оценки.

38
269. Для заданной группы вывести фамилии, имена и отчества сту-
дентов, имеющих "5" по информатике и не получающих стипендии.
270. Для группы ЭТ5-99 вычислить среднюю величину стипендии.
Вывести фамилии студентов этой группы, чья стипендия меньше
средней более чем на заданную величину.
271. Для заданных четырех групп вывести фамилии студентов, про-
пустивших более двух экзаменов.
272. Для студентов группы Эт5-99 вычислить средний балл по ин-
форматике. Вывести фамилии студентов, чья оценка по инфор-
матике выше среднего балла.
273. Для группы Эт1-99 вывести фамилии студентов, имеющих
только положительные оценки.

5.3.2. Обработка символьных объектов различной


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

27 Багаж авиапассажира характеризуется фамилией пассажира,


4. номером рейса, датой вылета, количеством вещей и общим
весом вещей.
Вывести фамилии пассажиров, багаж которых состоит из одной
вещи весом не менее 30 кг, и вычислить средний вес багажа всех
пассажиров.

27 Расписание экзаменов содержит следующую информацию: номер


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

39
27 Сведения об автомобиле состоят из его марки, номера, фамилии
6. владельца и отметки о прохождении технического осмотра.
Вывести фамилии владельцев и номера автомобилей опре-
деленной марки, не прошедших технического осмотра.

27 В расписании поездов указано: номер поезда, пункт отправления,


7. пункт назначения, время отправления, время в пути, цена билета.
Вывести информацию о поездах, следующих из Москвы в Санкт-
Петербург, время отправления которых с 7.00 до 9.00.

27 В анкетах сотрудников некоторого учреждения имеются


8. следующие сведения: фамилия, имя, отчество, год рождения,
должность (мастер, инженер, рабочий и т.д.), стаж, образование.
Вывести фамилии, имена и отчества мастеров с высшим
образованием и вычислить их средний стаж.

27 В сведениях об игрушках указывается название (кукла, кубики,


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

28 Имеются следующие сведения о книгах: фамилия и инициалы


0. автора, название, год издания.
Вывести сведения о всех книгах, изданных с 1990 г., в названии
которых содержится слово "информатика".

28 О каждой книге имеются следующие сведения: фамилия и


1. инициалы автора, название, год издания и количество запросов
за последние три года.
Вывести фамилии авторов и названия книг, зданных до 1980 г., по
которым нет запросов.

28 Сведения состоят из фамилий сотрудников и их телефонов.


2. Вывести фамилии сотрудников, номера телефонов которых
начинаются с цифр 361, 362 или 273.

28 Имеются сведения химических веществах: название, удельный

40
вес, проводимость (проводник, полупроводник, изолятор),
количество.
Вывести удельные веса и названия полупроводников, имеющихся в
количестве более 5 кг.

28 Сведения о компьютерах некоторого учреждения состоят из марки


4. компьютера, даты приобретения, номера комнаты, где находится
компьютер, и фамилии ответственного лица.
Вывести сведения о компьютерах IBM PC-486, приобретенных в
1995 г.

28 Сведения об изделиях, хранящихся на складе, состоят из


5. порядкового номера, наименования и количества. Сделан заказ
на некоторые изделия.
Вывести сведения об изделиях, по которым невозможно
выполнение заказа (заказанное количество больше имеющегося
на складе).

28 Имеются сведения об экспортируемых товарах: наименование,


6. страна-экспортер, срок поставки, и количество товара.
Вывести страны, в которые должен быть поставлен данный товар
до 1 июля.

28 Сведения о заказах некоторого предприятия бытового об-


7. служивания состоят из номера заказа и даты (число, месяц, год)
его исполнения.
Вывести все весенние заказы.

28 Некоторое обслуживающее предприятие хранит сведения о


8. заказах: наименование заказа и время (часы, минуты, секунды)
его поступления.
Вывести заказы, которые произошли с 15 ч 10 мин 35 сек до
18 ч 50 мин 10 сек.

28 Сведения о заказе состоят из адреса (улица, дом, квартира) и даты


9. (число, месяц, год) исполнения.
Вывести сведения о заказах, которые должны быть выполнены
15 мая 1997 г. на Московской улице.

41
29 Сведения о горных вершинах состоят из следующих данных:
0. название, координаты (широта, долгота), высота (в метрах над
уровнем моря).
Вывести сведения о вершинах с высотой более 3000 м,
расположенных в Северном полушарии.

29 По некоторой группе людей собраны следующие медицинские


1. данные: возраст, пол, рост, вес, температура, артериальное
давление (два числа верхнее и нижнее давление).
Вывести сведения о мужчинах моложе 25 лет, имеющих верхнее
артериальное давление больше 140.

29 О детях, поступающих в спортивную секцию, собраны следующие


2. данные: фамилия, имя, год рождения, вес, рост.
Вывести сведения о детях от 10 до 12 лет, рост которых не менее
155 см, а вес—не более 45 кг.

29 Автоматизированная записная книжка должна содержать


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

29 Имеются сведения о районных библиотеках города: номер, тип


4. (детская, взрослая), район, адрес, часы работы.
Вывести адреса и часы работы всех детских библиотек данного
района.

29 Сведения о магазинах города состоят из названия, района, адреса,


5. часов работы.
Вывести сведения о книжных магазинах данного района, ра-
ботающих после 18 ч, и число таких магазинов.
29 Имеются следующие данные о товарах обувного магазина:
6. наименование (ботинки, сапоги, босоножки и т.д.), тип (мужская,
женская или детская обувь), сезон, цвет, размеры, стоимость.
Вывести сведения о летней детской обуви и ее среднюю

42
стоимость.

29 Имеются сведения о кошках, участвующих в конкурсе: порода,


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

29 Сведения о маршрутах городских автобусов содержат: номер


8. маршрута, начальный пункт, конечный пункт, описание маршрута
(промежуточные остановки), среднее время движения по
маршруту, интервал в часы пик.
Вывести номера маршрутов с заданным конечным пунктом и
интервалом в часы пик, меньшим 10 мин. Также определить
число таких маршрутов.

29 Имеются сведения о пациентах поликлиники: фамилия, имя,


9. отчество, год рождения, адрес, основное заболевание, дата
последнего посещения лечащего врача.
Вычислить число больных диабетом и вывести сведения о
больных диабетом, не посещавших лечащего врача более трех
месяцев.

30 Имеются сведения о прохождении детьми прививок: фамилия,


0. имя, год рождения, отметки о прививках против туберкулеза,
полимиелита, кори, коклюша, столбняка.
Вывести сведения о детях семи лет, у которых отсутствует хотя бы
одна прививка.

30 Сведения о товарах магазина одежды: наименование (костюм,


1. пальто и т.д.), размер, рост, цвет, номер модели.
Вывести сведения о костюмах больших размеров (начиная с 52-го).
30 Имеются сведения о выпускниках учебного заведения: фамилия,
2. имя, отчество, год поступления, год окончания, специальность,
отметка о работе по специальности.
Вывести сведения о лицах, окончивших учебное заведение в
течение последних трех лет и не работающих по специальности.
30 Имеются сведения о программных продуктах: наименование, автор

43
(или коллектив авторов), версия, год создания, ЭВМ.
Вывести сведения об автоматизированных обучающих системах
для IBM PC.

ПРИЛОЖЕНИЕ 1. ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ НА


ПРОЦЕДУРЫ-ПАРАМЕТРЫ И ОБРАБОТКУ МАССИВОВ.
Условие задачи:
Разработать процедуру, которая для заданного массива b
из N элементов вычисляет сумму значений некоторой
функции F от всех положительных элементов массива.
Написать программу, в которой процедура применяется к
заданной квадратной матрице размера 55 в соответствии с
таблицей 1 гл. 3.
Основной трудностью при решении таких задач является
необходимость применения процедуры, имеющей формальным
параметром одномерный массив, к части матрицы (строке,
столбцу, совокупности строк или столбцов). Очевидный и очень
громоздкий способ решения этой задачи состоит в
переписывании рассматриваемой части матрицы во
вспомогательный одномерный массив. Однако, учитывая, что
компиляторы с Паскаля и Си располагают матрицу в памяти по
строкам, можно в качестве фактического параметра
(подставляемого вместо формального одномерного массива)
использовать строку (или совокупность последовательных
строк). В Фортране аналогичная ситуация имеет место для
столбцов.
Программа на Турбо Паскале для решения этой задачи с
подробными комментариями приведена ниже.
Program Razd3_Var1;
Const MAX=5; {максимальный размер матрицы}
Type mas=array[1..MAX] of real; {тип для строки матрицы}
Func=function(x:real):real;
Var a,b:array[1..MAX] of mas;{a-исходная матрица, b получена из а }
{транcпонированием}
N,M,L,i,j:integer; {N-число строк матрицы, М-число столбцов,}
{L-заданное значение строк (столбцов), i,j-счётчики строк и
столбцов}

44
{Sum-разработанная процедура-функция}
{$R-}{возможен такой вариант функции
Sum}
Function Sum(Var b:mas; N:integer;
F:Func):real;
Var i:integer; s:real;
Begin s:=0;
for i:=1 to N do
if b[i]>0 then
s:=s+F(b[i]);
Sum:=s;
End {Sum};
{$R+}{контроль за границами индексов}
Function Sum(Var b:array of real; N:integer; F:Func):real;
Var i:integer; s:real;
Begin s:=0;
{при описании форм.
массива array of...
нумерация элементов с нуля}
for i:=0 to N-1 do
if b[i]>0 then
s:=s+F(b[i]);
Sum:=s;
End {Sum};
Function pow3(x:real):real; far;{возведение в куб}
Begin
pow3:=x*x*x;
End {pow3};
Function root3(x:real):real; far; {извлечение кубического корня}
Begin
root3:=exp(1/3*ln(x));
End {root3};
Function Lnn(x:real):real; far;{логарифм}
Begin
Lnn:=ln(x);
End {Lnn};

45
Function tg(x:real):real; far;{тангенс- станд. Функции нет в Паскале}
Begin
tg:=sin(x*pi/180)/cos(x*pi/180);
End {tg};
Function ArcCos1(x:real):Real; far;{арккосинус, если х<=1, иначе 0}
Begin
If abs(x)<=1 then
ArcCos1 := ArcTan (sQrt (1-sQr (x)) /x)
Else
ArcCos1:=0;
End{ArcCos1};
Begin
N:=MAX;M:=MAX; {иначе при рассмотрении совокупности}
{нескольких строк матрицы как одного одномерного}
{массива тpебуется переписывать матpицу }
{в одномеpный массив, избавляясь от незаполненных
элементов;}
{если обpаботка только по стpокам,то достаточно M:=MAX}
Writeln(' Введите матpицу А pазмеpом', MAX,'*',MAX);
For i:=1 to N do
Begin
For j:=1 to M do
Read(a[i,j]);
ReadLn;
End;
Writeln(' Введите L'); ReadLn(L);
{далее пpименение функции Sum к каждой стpоке матpицы А}
{функция-фактический паpаметp- возведение в куб}
for i:=1 to N do
Begin
writeln('pезультат для',i,'-ой стpоки: ',Sum(a[i],M,pow3):7:2);
End;
{чтобы пpименить функцию Sum к столбцам матpицы А, надо}
{пpименить Sum к стpокам тpанспониpованной матpицы B}
{фактический паpаметp-извлечение кубического коpня}
for j:=1 to M do
for i:=1 to N do

46
b[j,i]:=a[i,j];
for j:=1 to M do
Begin
writeln('pезультат для',j,'-ого столбца : ',Sum(b[j],N,root3):7:2);
End;
{Далее пpименение функции Sum к совокупности из L стpок}
{формальный параметр-первая строка,}
{ обратите внимание на число элементов}
{функция-фактический паpаметp- Ln(x)}
writeln('pезультат для совокупности из', L, 'стpок: ',
Sum(a[1],L*M,Lnn):7:2);
{Далее пpименение функции Sum к совокупности из L
столбцов}
{функция-фактический паpаметp- tg(x)}
writeln('pезультат для совокупности из', L, 'столбцов: ',
Sum(b[1],L*N,tg) :7:2);
{Далее пpименение функции Sum ко всей матpице }
{функция-фактический паpаметp- Аrссоs(x), если abs(x)<=1,
иначе 0}
writeln('pезультат для всей матpицы ',
Sum(a[1],N*M,ArcCos1):7:2);
End.
Если используемое (например, задаваемое вводом) число сторок
и (или) столбцов матрицы меньше заданного при описании,
необходимо при применении процедуры к частям матрицы
исключить из матрицы незаполненные элементы. В приведённой
ниже программе это осуществляется с помощью переписывания
заполненной части матрицы в одномерный массив.
Program Razd3_Var2;
{постpочная обpаботка матpицы - 3 ваpианта}
Const NMAX=5; MMAX=5;
Type mas=array[1..MMAX] of real; {стpока матpицы}
matr=array [1..NMAX] of mas;
mas1=array[1..NMAX*MMAX] of real;
Func=function(x:real):real;
Var a: matr; N,M,L,i,j:integer; b:mas1;
Function Sum(Var b:array of real; N:integer; F:Func):real;

47
Var i:integer; s:real;
Begin s:=0;
for i:=0 to N-1 do
if b[i]>0 then
s:=s+F(b[i]);
Sum:=s;
End {Sum};
Function pow3(x:real):real; far;
Begin
pow3:=x*x*x;
End {pow3};
Function Lnn(x:real):real; far;
Begin
Lnn:=ln(x);
End {Lnn};
Function ArcCos1(x:real):Real; far;
Begin
If abs(x)<=1 then
ArcCos1 := ArcTan (sqrt (1-sqr (x)) /x)
Else
ArcCos1:=0;
End{ArcCos1};
Procedure MatrMas(Var A:matr; Var B:mas1; N,M:integer);
{переписывание матpицы в одномеpный массив}
Var i,j,k:integer;
Begin
k:=0;
for i:=1 to N do
for j:=1 to M do
Begin
k:=k+1;
B[k]:=A[i,j];
End;
End{MatrMas};

Begin Writeln(' Введите число стpок и столбцов матpицы');


ReadLn(N,M);

48
Writeln(' Введите матpицу А pазмеpом', N,'*',M);
For i:=1 to N do
Begin
For j:=1 to M do
Read(a[i,j]);
ReadLn;
End;
Writeln(' Введите L');
ReadLn(L);
{далее пpименение функции Sum к каждой стpоке матpицы А}
{функция-фактический паpаметp- возведение в куб}
for i:=1 to N do
Begin
writeln('pезультат для',i,'-ой стpоки: ',Sum(a[i],M,pow3):7:2);
End;
{Далее пpименение функции Sum к совокупности из L стpок}
{Следующий опеpатоp не нужен, если M=MMAX; тогда можно}
{действовать, как в пpедыдущем пpимеpе}
MatrMas(a,b,n,m);
writeln('pезультат для совокупности из', L, 'стpок: ',
Sum(b,L*M,Lnn):7:2);
{Далее пpименение функции Sum ко всей матpице }
{функция-фактический паpаметp-Аrссоs(x),если
abs(x)<=1,иначе 0}
writeln('pезультат для всей матpицы ', Sum(b,N*M,ArcCos1):7:2);
End.

ПРИЛОЖЕНИЕ 2. НЕКОТОРЫЕ ФОРМУЛЫ АНАЛИТИЧЕСКОЙ


ГЕОМЕТРИИ НА ПЛОСКОСТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ГЛ. 4.
Уравнение прямой
Общее: (1)
Ax  By  C  0
(А и В не равны нулю одновременно).
Тангенциальное: ,
y  kx  b
kугловой коэффициент прямой,
k = tg(), где угол между прямой и осью x.

49
Уравнение прямой, проходящей через две заданные
(несовпадающие) точки (х1,у1) и (х2,у2):
.
y  y1 x  x1

y2  y1 x2  x1
Нормальное: x cos() + y sin() – p =0, (2)
где ррасстояние от прямой до начала координат, угол между
нормалью к прямой и осью абсцисс; (2) можно получить из (1),
умножив (1) на нормирующий множитель

1
k
A2  B 2
здесь знак k должен быть противоположен знаку С.

Параллельность прямых
Две прямые:
A1 x + B1 y+C1=0 (или y=k1 x+b1);
A2 x + B2 y+C2=0 (или y=k2 x+b2);
параллельны, если A1*B2-A2*B1=0 (или k1=k2).
Перпендикулярность прямых
Две прямые перпендикулярны, если A1*A2+B1*B2=0 (или k1*k2=-1).

Расстояние L между двумя точками (x1,y1) и (x2,y2):


.
2 2
L  ( x1  x2 )  ( y1  y2 )

Площадь S треугольника с вершинами в точках (x1,y1), (x2,y2),


(x3,y3):
. (3)
1
S  ( x 2  x1 )( y 3  y1)  ( x 3  x1)( y 2  y1)
2
Расстояние h от точки (x3,y3) до прямой, проходящей через
точки (x1,y1) и (x2,y2):
.
2 S ( x2  x1 )  ( y3  y1 )  ( x3  x1 )  ( y2  y1 )
h 
L ( x  x )2  ( y  y )2
2 1 2 1

50
Расстояние h от точки (x3,y3) до прямой, заданной
уравнением (1):
,
Ax3  Bx3  C
h
A2  B 2
здесь знак (Ax3+By3+C) различен для точек, лежащих по разные
стороны от прямой.
Уравнение эллипса с осями, параллельными координатным:
,
2 2
( x  x0 ) ( y  y0 )
 1
A2 B2
где A (B)-длина полуоси эллипса, параллельной оси Ox (Oy), точка
(x0,y0)- центр эллипса.
Уравнение окружности:
,
2 2 2
( x  x0 )  ( y  y0 )  R
где R-радиус, (x0,y0)- центр окружности.
Центр окружности, проходящей через три заданные точки
(x1,y1), (x2,y2), (x3,y3):
,
( r2  r1 )( y3  y1 )  ( r3  r1 )( y2  y1 )
x0 
2 ( y3  y1 )( x2  x1 )  ( y2  y1 )( x3  x1 )
,
( r2  r1 )( x3  x1 )  ( r3  r1 )( x2  x1 )
y0  
2 ( y3  y1 )( x2  x1 )  ( y2  y1 )( x3  x1 )
где ri =xi2 +yi2 , i =1,2,3, а выражение в знаменателе с точностью до
коэффициента и знака совпадает с выражением (3) для площади
описанного треугольника и принимает значение 0 тогда и только
тогда, когда заданные точки лежат на одной прямой.

ЛИТЕРАТУРА
304. Сборник задач по базовой компьютерной подготовке Зубов В.
С., Котарова И. Н., Архипов О. Г. и др. —М.: Изд-во МЭИ, 1999.—
178 с.
305. Батасова B. С.,. Котарова И. Н. Сборник заданий для типового
расчета: Метод. указания по курсу ОПВТ.—М.: МЭИ, 1994.—40 с.

51
ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ........31. ЗАДАЧИ НА ПАРАМЕТРИЧЕСКИЕ ЦИКЛЫ
............................................................................................................3
1.1. Вывод результатов в виде таблицы.............................................3
1.2. Добавления к задачам п.1.1 (вывод результатов в виде таблицы)
..................................................................................................................7
1.3. Накопление суммарных значений..................................................9
2. ИТЕРАЦИОННЫЕ ЦИКЛЫ...............................................................14
3. ПРОЦЕДУРЫ-ПАРАМЕТРЫ. ОБРАБОТКА МАССИВОВ.............19
4. ЭКСТРЕМАЛЬНЫЕ ЗАДАЧИ ГЕОМЕТРИЧЕСКОГО
СОДЕРЖАНИЯ................................................................................23
5. ОБРАБОТКА СИМВОЛЬНОЙ ИНФОРМАЦИИ.............................26
5.1. Обработка последовательностей символов.............................26
5.2. Программирование процедур в задачах обработки текста........28
5.3. Задачи на обработку символьных данных сложной структуры. .33
5.3.1. Обработка студенческой ведомости.........................................33
5.3.2. Обработка символьных объектов различной структуры........35
ПРИЛОЖЕНИЕ 1. ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ НА
ПРОЦЕДУРЫ-ПАРАМЕТРЫ И ОБРАБОТКУ МАССИВОВ...............40
ПРИЛОЖЕНИЕ 2. НЕКОТОРЫЕ ФОРМУЛЫ АНАЛИТИЧЕСКОЙ
ГЕОМЕТРИИ НА ПЛОСКОСТИ ДЛЯ РЕШЕНИЯ ЗАДАЧ ГЛ. 4.....45
ЛИТЕРАТУРА......................................................................................47

52