Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Задачник-практикум по основам программирования. Учебное пособие по курсу «Информатика»

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

этих функций, в этих функциях используются нелокальные переменные xemin, a, Mx, yemin, yMax, My.

Упражнения

1)Проанализовать влияние изменения количества точек разбиения на вид графика (например, четное и нечетное количество точек).

2)Внести изменения так, чтобы график изображался с отступом от границы графического окна.

3)Изменить цвет пера при рисовании в графическом окне: график рисовать одним цветом, а оси другим.

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

5)При использовании координатной сетки (см. предыдущее упраж- нение) предусмотреть вывод значений, соответствующих линиям сетки.

6)Уменьшить количество точек разбиения при построении графика до 10–20. Построить график с выделением опорных точек (точек, в ко- торых проводилось вычисление значения функции). Например, опорные точки можно отмечать контрастным цветом, или маленькими графичес- кими фигурами окружностями, квадратами, отрезками вертикальных линий и т. д.

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

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

Чтобы не затрудняться вводом значений температуры, можно вос- пользоваться датчиком случайных чисел (см. Приложение А).

program Sub_9; uses GraphABC; const dx=50;

k=7; z=20;

delta = 10;{диапазон изменения температур от -10о

до 10о}

var x, y, color, i, t, xm, ym: integer;

101

begin

TextOut(250,0,’ Температура воздуха за неделю); xm:=WindowWidth;

ym:=WindowHeight; y:=ym div 2; x:=dx+z;

Line(x-z,y,xm-z,y); {ось OX}

Line(x-z,z,x-z,ym-z); {ось OY} TextOut(x-2*z,y,’0’);

for i:=1 to k do begin

SetPenColor(clFuchsia); t:= Random(2*delta)-delta; if t>0 then color:=clRed else color:=clBlue; SetPenColor(color);

Rectangle(x,(y-10*t),x+dx,y); x:=x+dx+z

end end.

Упражнения

1)Ввести в гистограмме подписи значений температуры под соот- ветствующими столбцами.

2)Увеличить период наблюдений за температурой воздуха до декады,

месяца.

3)Заменить диапазон изменения температур на [–20 оС, +40 оС].

4)Выполнитьзаливкустолбиковгистограммы цветомграницыпрямо- угольника (красным или синим), используя процедуру заливки FloodFill библиотеки GraphABC (см. Приложение Б).

5)Объяснить, почему в случае нулевой температуры ось OX, а иногда

иось OY, окрашивается цветом границы.

6)Выполнить заливку столбиков гистограммы цветами, отличными от цветов границ, например, темно-красным или темно-синим (см. При-

ложение Б).

7)Организовать в программе ввод значений температур.

102

8) Построить гистограмму, отображающую значения дневных и ноч- ных температур за неделю.

ЗАДАЧИ

6.1.Описать процедуру MaxMin (X, Y), которая присваивает X большее из вещественных чисел X и Y, а Y меньшее. Даны A, B, C вещественные числа. Упорядочить их по возрастанию, используя процедуру Max Min.

6.2.Описать процедуру, вычисляющую по стороне равностороннего треугольника его периметр и площадь. Используя эту процедуру, найти периметры и площади n равносторонних треугольников.

6.3.Описать процедуру, меняющую порядок следования цифр целого положительного числа на обратный. Используя эту процедуру, поменять порядок следования цифр для каждого из n заданных чисел. Выдать полученные числа и найти минимальное значение из Описать функцию получения числа с обратным порядком следования цифр для заданного целого положительного числа. Для n заданных натуральных чисел найти и вывести числаперевертыши», используя эту функцию [12].

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

Примечание. Функция нахождения площади может иметь в качестве параметров или длины сторон, или координаты вершин.

6.6.Дан выпуклый пятиугольник, заданный координатами своих вершин. Найти его площадь.

Примечание. Выпуклый пятиугольник c вершинами (A, B, C, D, E) можно разбить на три треугольника ABC, ACD и ADE. Соответственно площадь выпуклого пятиугольника можно посчитать как сумму площадей трех треугольников.

6.7.ОписатьфункциюV(k, r) вычисленияобъемаkмерногошарарадиусa r,

 

 

 

(2r)

k

 

π

k

 

используя формулу

Vk

=

 

(

 

2

 

k !!

2

)

.

 

 

 

 

 

 

 

103

Формула справедлива для k = 1, 2, …,

k

жения 2 .

k

это целая часть выра-2

Используя эту функцию, вычислить V при k = 2 и при k = 3. Сравнить полученный результат при k = 3 с результатом, полученном при

использовании классической формулы объема шара V = 43 π r3 .

6.8.Описатьлогическуюфункциюнахождениякорнейквадратногоуравнения позаданным егокоэффициентам свыходными параметрами корнями уравнения. В случае отсутствия корней функция должна вернуть значение false, в случае наличия корней true. Используя эту функцию, найти корни для n квадратных уравнений.

6.9.Описать функцию определения координат точки пересечения двух

прямыхA1x+B1y+C1=0 иA2x+B2y+C2=0. Функциядолжнавозвращать значение true, если прямые пересекаются в одной точке, или значение false в противном случае. Координаты точки пересечения, в случае ее наличия, передавать через параметры. Используя эту функцию, определить, сколько из n заданных прямых попарно пересекаются.

6.10.Описать процедуру нахождения координат точки M(x, y), делящей

отрезок AB, заданный своими координатами A(x1, y1) и B(x2, y2), в отношении |AM| : |MB| = λ, используя формулы:

x =

x1 + λ x2

,

y =

y1 + λ y2

.

1+ λ

 

 

 

 

1+ λ

Используяэтупроцедуру, найтиточки, делящиеотрезокAB вотношениях 3:2 и 5:7. Координаты начала и конца отрезка AB заданы.

6.11.Описать процедуру, которая выводит первые n строк числового треугольника Паскаля. Треугольником Паскаля называется числовой треугольник, вкоторомпокраямстоятединицы, акаждоечисловнутри равно сумме двух стоящих над ним в ближайшей строке сверху.

Например, ниже приведен числовой треугольник Паскаля для n = 5.

 

 

1

 

 

 

1

 

1

 

 

1

2

1

 

1

3

 

3

1

1

4

6

4

1

104

Используя процедуру, напечатать k различных треугольников Паскаля.

6.12.Описать две функции, одна из которых определяет, является ли год високосным, а вторая возвращает количество дней для M-го месяца года Y. Используя эти функции, описать процедуру, которая по информации о правильной дате (день, номер месяца и год) определяет дату предыдущего дня. Определить даты предыдущих дней для n введенных дат.

Примечание. Год считается високосным по григорианскому календарю, если номер года в столетии не равен нулю и делится на 4, а если равен нулю, то количество столетий должно делиться на 4.

6.13.Описать в виде функции алгоритм нахождения НОД двух натуральных чисел и применить его для нахождения НОД каждой из n пар чисел заданной последовательности.

6.14.Описать в виде функции алгоритм нахождения НОД двух натуральных чисел и применить его для нахождения НОД последовательности из n чисел.

6.15.Описать процедуру, преобразующую дробь a/b к несократимому виду p/q. Знак результирующей дроби p/q приписывается числителю (т. е. q > 0 всегда). Использовать функцию для нахождения НОД. Привести к несократимому виду n дробей. Каждая дробь задается парой целых чисел.

6.16.Описать функцию проверки, можно ли представить n! в виде произведения трех последовательных целых чисел.

К каждому из целых чисел в диапазоне от m1 до m2 применить описанную функцию.

6.17.Для заданного вещественного положительного числа a вычислить

величину y = 3 a 6 a2 + 1 , используядлявычисленияприближенного

1+ 7 3 + a

значения y = k x

рекуррентное соотношение:

y

 

= k 1 y

 

+

 

x

,

n = 1, 2, ...

n

n1

k

ynk11

 

k

 

 

 

y0

= 1

 

 

 

 

 

 

.

Вычисления прекратить, как только yn yn1 < eps (0 < eps << 1).

105

Описать вычисление корня в виде функции.

6.18.Описать функцию вычисления приближенного значения функций Бесселя первого рода по формуле [11]:

J2

(x) =

1

x

 

2

1

 

x

 

4

1

 

x

 

6

1

 

x

 

8

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

+ ...

2!

 

1! 3!

 

2! 4!

 

3! 5!

 

 

 

2

 

 

2

 

 

2

 

 

2

 

 

Вычисления прекратить, как только абсолютная величина очередного члена ряда станет меньше заданного eps (0 < eps << 1). Используя эту функцию, вычислить значения функции J2(x) для каждого x из последовательности n вещественных чисел.

6.19.Описать функцию вычисления приближенного значения функции Бесселя первого рода по формуле:

 

x

n

(−1)i x

2 i

Jn

(x) =

 

 

 

 

 

 

при целом порядке n 0 и | x | < π.

 

 

 

 

2

 

i=0

i! (n + i)! 2

 

 

Вычисления прекратить, как только абсолютная величина очередного члена ряда станет меньше заданного eps (0 < eps << 1). Используя эту функцию, для заданного значения x вычислить значения функций Бесселя порядка 0, 1, …, k.

Примечание. Для проверки использовать контрольный пример J30(20) = = 1.24015363310-4

6.20.Многочлены Чебышева Tn(x) определяются рекуррентными

соотношениями: T0(x) = 1; T1(x) = x; Tn+1(x) = 2xTn(x) – Tn-1(x). Для каждого x из последовательности n вещественных чисел составить

таблицу значений первых k многочленов Чебышева, используя процедуру вычисления значений многочленов Чебышева и их выдачи

в виде таблицы.

6.21.Описать функцию вычисления arccosx, используя разложение в ряд:

arccos x =

π

− (x +

x3

+ 1 3x5 +

1 3 5x7

+ ...)

x2 < 1

2

 

 

 

 

2 3 2 4 5 2 4 6 7

 

 

Вычисления прекратить, как только абсолютная величина очередного члена ряда станет меньше заданного eps (0 < eps << 1). Вычислить значение функции arccosx для m случайно выбранных чисел.

6.22.Описать функцию вычисления arcsinx, используя разложение в ряд:

arcsinx = x +

x3

+ 1 3x5 +

1 3 5x7

+ ...

x2 < 1

 

 

 

2 3 2 4 5 2 4 6 7

 

 

106

Вычисления прекратить, как только абсолютная величина очередного члена ряда станет меньше заданного eps (0 < eps << 1). Вычислить значение функции arcsinx для m случайно выбранных чисел.

6.23.Описать функцию

y(n) =

 

 

1

+

 

1

 

+

 

1

+ ... +

 

1

 

.

1

+ 1

1+ 2

2

3

1+ n

n

 

 

 

 

1+ 3

 

 

 

Для ее реализации описать функцию f(k) вычисления kk. Вычислить значение функции y(n) для m случайно выбранных чисел.

6.24.Вычислить значение y по следующей формуле

y = 4 1

cos4

x

+ 5

1+

arctg x

+ 9

1

.

4

 

2

3 + x2

 

 

 

 

 

 

Для вычисления корня описать функцию, использующую ряд Тейлора:

(1+ x)m = 1+ m x + m (m 1)

x2

+ m (m 1) (m 2)

x3

+

2 !

 

3 !

 

 

+ m (m 1) (m 2) (m 3) x4 + ...

4 !

для | x | 1 и вещественного m > 0.

Вычисления прекратить, как только абсолютная величина очередного члена ряда станет меньше заданного eps (0 < eps << 1).

Примечание к задачам № 6.25–6.30. При решении задач следует самостоятельно определить, какие подзадачи следует оформить в виде подпрограмм, и какие виды подпрограмм (процедуры или функции) следует использовать.

6.25.Найти все меньшие 100 натуральные числа, которые при возведении в квадрат дают числаперевертыши».

6.26.Взаимно простые числа несколько целых чисел таких, что общими делителями для всех этих чисел являются лишь +1 и –1. Если каждое из этих чисел взаимно просто с каждым другим из них, то говорят, числа попарно простые (для двух чисел оба понятия совпадают).

Даны натуральные числа p и n и последовательность из n целых

чисел. Подсчитать, сколько среди чисел данной последовательности находится простых чисел, взаимно простых с числом p3.

6.27.Простое число называется числом Мерсена, если оно может быть представлено ввиде2p–1, гдеp тожепростоечисло. Данонатуральное

107

число n. Найти все числа Мерсена, которые меньше заданного числа n.

6.28.Натуральное число изn цифрявляется числомАрмстронга, еслисумма

его цифр, возведенных в n-ую степень, равна самому числу. Например, 153=13+53+33. Получить все числа Армстронга, состоящие из двух, трех и четырех цифр.

6.29.Дано натуральное число n. Получить в порядке возрастания n первых натуральных чисел, которые не делятся ни на какие простые числа,

кроме 2, 3, 5.

6.30.Два натуральных числа называются «дружественными», если каждое из них равно сумме простых делителей другого, за исключением его самого. Найти все пары «дружественных» чисел в диапазоне [a, b], где a и b заданные целые положительные числа.

Примечание. Число 1 (единица) не относится к простым числам.

6.31.Описать процедуру, которая по трем числам, обозначающим число, месяц и год, проверяет корректность даты и в случае корректности находит номер этого дня с начала года и определяет, сколько дней осталось до конца года. Используя эту процедуру, определить количество корректных дат для n троек целых чисел.

6.32.Описать процедуру, которая находит тройку таких натуральных чисел x, y, z таких, что n = x2+y2+z2. Применить процедуру для последовательности из k различных натуральных чисел.

6.33.Известно, что любое натуральное число можно представить в виде суммы не более чем четырех квадратов целых чисел. Описать

процедуру, которая находит четверку таких натуральных чисел x, y, z, t, что n = x2+y2+z2+t2. Применить процедуру для последовательности из k различных натуральных чисел.

6.34.Комплексное число задается модулем r и аргументом (углом) φ. Корень n-ой степени (n натуральное) из комплексного числа имеет n различных значений:

n

 

ϕ + 2kπ

+ i sin

ϕ + 2kπ

, k = 0, 1, 2, ..., n 1.

 

r cos

n

n

 

 

 

 

 

 

Описать процедуру нахождения корней n-ой степени из комплексного

числа и их вывода в виде r[cosϕ + i sin ϕ ].

Применить процедуру для извлечения корней n-ой степени и вывода полученных результатов для k комплексных чисел.

108

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ

Задание 1

Описать и использовать функции.

1) Описать функцию вычисления f(x) по формуле

0

 

при

x 0

 

 

 

2

x

при 0 < x 1

 

f (x) = x

 

 

 

2

sin π x

2

при x

> 1

x

 

 

Используя эту функцию, для заданных чисел a, b, c вычислить зна- чения функций f(a), f(b) и f(c) и вывести их в порядке убывания.

2) Описать функцию вычисления f(x) по формуле

 

2

при – 2 x < 2

x

2

f (x) = x

+ 4x + 5

при x 2

4

 

при

x < –2

 

 

 

 

Используя эту функцию, для n заданных чисел вычислить f(x). Среди вычисленных значений найти наибольшее.

3)Описать функцию определения количества цифр в целом поло- жительном числе. Для последовательности из n натуральных чисел найти число с максимальным количеством цифр, используя эту функцию.

4)Описатьлогическуюфункцию, определяющую вселицифрыцелого положительного числа различны. Используя эту функцию, проверить, что все из n заданных натуральных чисел имеют различные цифры.

5)Описать функцию, возвращающую k-ую цифру целого положитель- ного числа (при нумерации цифр в числе справа налево). Если количество цифр в числе меньше k, то функция возвращает –1. Используя эту функцию, для каждого из n заданных целых положительных чисел вывести k-ую цифру.

6)Описать логическую функцию, возвращающую значение true, если целый параметр является числомперевертышем» (т. е. его запись читается одинаково справа налево и слева направо), и значение false в противном случае. Используя эту функцию, найти количество таких чисел в последо- вательности из n целых положительных чисел.

109

7)Описать функцию вычисления расстояния между двумя точками на плоскости по координатам этих точек. Используя эту функцию, для n пар точек найти пару точек с минимальным расстоянием между ними.

8)Описать функцию вычисления расстояния от точки (x, y) до прямой Ax+By+C=0. Используя эту функцию, найти среди n заданных точек точку наиболее удаленную от этой прямой.

9)Описать функцию приближенного вычисления куби-

ческого

 

корня

y = 3

x , используя рекуррентное соотношение

y

 

= y

 

+

1

(

x

2 y

 

), y

 

= x .

n

n1

3

 

n1

0

 

 

 

 

yn21

 

 

 

Вычисления прекратить, как только абсолютная величина очередного члена ряда станет меньше заданного eps (0 < eps <<1).

Вычислить кубические корни для n чисел, вводимых с клавиатуры, используя эту функцию. Для каждого числа использовать три значения eps: 0.001, 0.0001 и 0.00001.

10) Описать функцию приближенного вычисления y = sin x, используя

формулу y = sin x = x x3 + x5 ... .

3! 5!

Вычисления прекратить, как только абсолютная величина очередного члена ряда станет меньше заданного eps (0 < eps << 1).

Используя эту функцию, вычислить sin x для n чисел вводимых с клавиатуры. Для каждого числа использовать свое значение eps (например, 0.001, 0.0001, 0.000001 и т. п.).

11)Описать функцию вычисления y = xn, где x вещественное число, n натуральное число. Используя эту функцию, вычислить xn для задан- ного вещественного числа x и последовательности целых показателей n, вводимых с клавиатуры.

12)Описать функцию вычисления n!. Используя эту функцию, для заданныхнатуральныхчиселn иm вычислитьбиноминальныйкоэффициент

по формуле Cm =

n!

 

.

m!(n m)!

n

 

13) Описать функцию проверки, является ли заданное значение x корнем квадратного уравнения ax2+bx+c=0. Используя эту функцию, посчитать количество квадратных уравнений из n заданных, для которых число x является корнем.

110

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]