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

!!Сборник задач по программированию

..pdf
Скачиваний:
99
Добавлен:
02.06.2023
Размер:
1.54 Mб
Скачать

 

 

 

 

 

 

 

Задание

вар.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

Дана матрица N×M, состоящая из натуральных чисел. Выбрать в строках

самые левые наименьшие элементы и поставить их в первый столбец.

 

Дано число n. Создайте массив int A[n][n], и заполните его по следующе-

 

му правилу: числа на диагонали, идущей из правого верхнего в левый

 

нижний угол равны 1; числа, стоящие выше этой диагонали, равны 0;

15

числа, стоящие ниже этой диагонали, равны 2.

 

 

 

 

 

 

 

 

0 0 0 1

 

 

 

 

 

 

 

 

0 0 1 2

 

 

 

 

 

 

 

 

0 1 2 2

 

 

 

 

 

 

 

 

1 2 2 2

 

Дано число n и квадратный массив int A[n][n]. Проверьте, является ли

16

массив симметричным относительно главной диагонали.

 

 

 

 

 

 

 

 

0 1 2

 

 

 

 

 

 

 

 

 

1 2 3

 

 

 

 

 

 

 

 

 

2 3 4

 

Даны два числа n и m. Создайте двухмерный массив int C[n][m] и запол-

 

ните его по следующим правилам: числа, стоящие в строке 0 или в столб-

 

це 0 равны 1 (A[0][j]=1, A[i][0]=1); для всех остальных элементов массива

 

A[i][j]=A[i-1][j]+A[i][j-1], то есть каждый элемент равен сумме двух

 

элементов, стоящих слева и сверху от него. Выведите данный массив на

17

экран, отводя на вывод каждого числа ровно 6 символов.

 

Вход

 

Выход

 

 

 

 

 

 

 

4 6

1

1

1

 

1

 

1

1

 

 

1

2

3

 

4

 

5

6

 

 

1

3

6

 

10

15

21

 

 

1

4

10

20

 

35

56

 

Даны числа n и m. Создайте массив int A[n][m] и заполните его следую-

 

щей змейкой (ниже приведен пример для n=4 и m=6):

18

 

0

1

2

3

4

 

5

 

 

 

11

10

9

8

7

 

6

 

 

 

 

 

 

 

12

13

14

15

16

17

 

 

 

23

22

21

20

19

18

 

 

Даны числа n и m. Создайте массив int A[n][m] и заполните его следую-

 

щим образом (ниже приведен пример для n=4 и m=6):

19

 

0

1

3

6 10

14

 

 

2

4

7 11

15

18

 

 

 

 

 

 

5

8 12

16 19

 

21

 

 

 

9

13

17

20

22 23

 

 

Выведите массив на экран, отводя на вывод каждого числа ровно 3

20

символа. Дано число n. Создайте массив int A[2*n+1][2*n+1] и заполните

 

его по спирали начиная с числа 0 в центральной клетке A[n][n]. Спираль

 

выходит вверх, далее закручивается против часовой стрелки. Выведите

 

 

 

 

 

 

 

 

 

 

71

Задание

вар.

массив на экран, отводя на вывод каждого числа ровно 3 символа. Ниже приведен пример для n=2:

12 11 10 9 24

13 2 1 8 23

14 3 0 7 22

15 4 5 6 21

16 17 18 19 20

Дан двухмерный массив, содержащий 8 строк и 8 столбцов. Элементами

21массива являются целые числа. Упорядочить массив по возрастанию элементов побочной диагонали.

Дан квадратный массив из n строк и n столбцов. Необходимо элементам, находящимся на главной диагонали, проходящей из левого верхнего угла в правый нижний (то есть тем элементам A[i][j], для которых i=j) присвоить значение 1, элементам, находящимся выше главной диагонали –

22значение 0, элементам, находящимся ниже главной диагонали – значение 2, то есть получить такой массив (пример для n==4):

1 0 0 0

2 1 0 0

2 2 1 0

2 2 2 1

Создайте массив int A[5][5] и выведите его на экран следующим образом 0 0 1 0 0

23

0 0 1 0 0

1 1 1 1 1

0 0 1 0 0

0 0 1 0 0

Создайте массив int A[5][5] и выведите его на экран следующим образом 1 0 1 0 1

24

0 1 1 1 0

1 1 0 1 1

0 1 1 1 0

1 0 1 0 1

Создайте массив int A[5][5] и выведите его на экран следующим образом 1 1 1 1 1

25

0 1 1 1 0

1 1 0 1 1

0 1 1 1 0

1 1 1 1 1

Дана матрица размера NxM ( N>2, M<10). Элементами матрицы являются числа 0 и 1. Разрешенная операция – перестановка столбцов. Преобразо-

26вать матрицу так, чтобы первыми в ней были столбцы с единицей в первой строке, затем – столбцы с единицей во второй строке (если такие

72

Задание

вар.

есть) и т.д. Не разрешается вводить дополнительную матрицу.

Дана матрица размера NxM. Строки считать похожими, если совпадают

27множества чисел, встречающиеся в этих строках. Найти количество строк, похожих на первую.

Дана матрица размера NxM. Столбцы считать похожими, если совпадают

28множества чисел, встречающиеся в этих столбцах. Найти количество столбцов, похожих на последнюю.

Дана матрица размера NxM. Столбцы считать похожими, если совпадают

29множества чисел, встречающиеся в этих столбцах. Найти количество столбцов, похожих на последнюю.

Создайте массив int A[5][5] и выведите его на экран следующим образом 1 1 1 1 1

30

1 1 0 1 1

1 0 1 0 1

1 1 0 1 1

1 1 1 1 1

73

5.Функции и библиотеки

5.1.Функции

Базовый уровень

Задание: написать блок-схему и программу согласно заданию.

Задача

вар.

Рассчитать значение х определив и использовав необходимую функцию

1

x

 

5 5

 

 

12 12

 

19 19

 

2

 

 

 

 

 

 

 

2

 

2 .

 

Рассчитать значение y определив и использовав необходимую функцию

2

y

1 sin1

 

3 sin 3

 

5 sin 5

 

 

 

 

 

 

3

3

 

3 .

3Рассчитать значение z=max(a,2b)+max(2a-b,b) определив и использовав функцию max(x,y) – максимальное из двух чисел.

Рассчитать значение х определив и использовав необходимую функцию

4x 5 5 12 12 19 19

7 7

8 8

2 2 .

Рассчитать значение y определив и использовав необходимую функцию

5

y

2 sin 2

 

6 sin 6

 

1 sin1

 

sin 5 5

sin 3 3

sin 4 4 .

 

 

 

 

6Рассчитать значение z=min(2a,b+a)+min(2a-b,b) определив и использовав функцию Min(x,y) – минимальное из двух чисел.

Рассчитать значение х определив и использовав необходимую функцию

7x 8 15 6 12 7 21

15 8

12 6

21 7 .

Задан треугольник ABC длинами своих сторон a,b,c. Найти его медианы,

8написав функцию вычисления медианы 0,52b2 2c2 a2 (для стороны a). Стороны a,b,c ввести с экрана.

Рассчитать значение z=sing(x)+sing(y) определив и использовав функ-

9цию sing(a) равную sing(a) =-1 при а<0, sing(a) =0 при а=0, sing(a) =1 при а>0 .

Даны основание и высота двух равнобедренны трапеций. Найти сумму

10их периметров. (Определить функцию для расчета периметра равнобедренной трапеции по ее основанию и высоте).

Написать программу определения периметра треугольника, заданного

11координатами его вершин. Длинустороны определять с помощью функции. Написать программу определения площади пятиугольника с заданными

12координатами его вершин (x1,y1), (x2,y2), (x3,y3), (x4,y4), (x5,y5) как сумму площадей трех треугольников. Площадь треугольника, определенную по координатам вершин, рассчитать с помощью функции.

74

 

 

 

 

 

Задача

 

 

вар.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

Даны 8 различных чисел. Определить максимальное из них, используя

функцию определения максимального из двух чисел.

 

14

Найти все двухзначные простые числа, определив функцию для вычис-

ления простых чисел.

 

 

 

 

 

 

 

 

 

 

 

 

2 5! 3 8!

 

 

15

Найти значения выражения

6! 4!

, где n!

означает факториал, опреде-

 

лив функцию для расчета факториала.

 

 

16

Найти площадь прямоугольного треугольника АВС, заданного координа-

тами вершин. Длину стороны определять с помощью функции.

 

Написать программу определения площади шестиугольника с заданными

17

координатами его вершин (x1,y1), (x2,y2), (x3,y3), (x4,y4), (x5,y5),(x6,y6) как

сумму площадей четырех треугольников Площадь треугольника, опреде-

 

ленную по координатам вершин, рассчитать с помощью функции.

18

Найти сумму цифр двух целых двухзначных чисел a и b, написав функ-

цию определения цифр в числе.

 

 

 

19

Найти значения выражения sh(x)tg(x 1) ctg2 (2 sh(x 1)),

определив

 

sh(x)

ex e x

 

 

 

 

 

 

 

функцию

 

 

. Значение x ввести с экрана.

 

 

2

 

 

20

Дан массив m целых чисел. Написать программу определения средне-

арифметического этих чисел используя функцию.

 

21

Дан массив целых чисел A.

Найти суммы положительных и отрицатель-

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

22

Рассчитать значение z=modd(x)-modd(y) определив и использовав

функцию modd(a) равную modd(a) =a при а>=0, modd(a) =-a при а<0.

 

Треугольник задан координатами его вершин. Определить вид треуголь-

23

ника (равнобедренный, равносторонний , прямоугольный или обычный).

 

Длину стороны определять с помощью функции.

 

 

Определить первую космическую скорость Земли и Венеры, используя

24

функцию расчета этой скорости v=√(G*M)/R (гравитационная постоян-

ная G=6.67 10-11 кг-1 м3 сек-3, масса и радиус Венеры Мv=4.86 1027 г,

 

Rv=6175 км; Земли Mz=5.98 1027 г, Rz=6371 км).

 

 

Написать

программу

определения

максимального предельного заряда

25

qmax для трех шаров с диаметром r1,r2, r3, используя функцию расчета

максимального предельного заряда. Напряженность поля, при которой

 

начинается ударная

ионизация,

равна

E=3 МВ/м

(qmax=E/(4πε0εr2)

 

ε0=8.85*10-12 Ф/м, ε=1).

 

 

 

 

26

В ЭВМ вводятся по очереди данные о росте N учащихся класса. Опреде-

лить средний рост учащихся в классе, используя функции расчета сред-

 

него.

 

 

 

 

 

 

 

 

 

Даны два натуральных числа. Найти в каком из них больше цифр, ис-

27

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

75

Задача

вар.

Написать программу определения площади четырехугольника с заданными координатами его вершин (x ,y ), (x ,y ), (x ,y ), (x ,y ) как сумму

28площадей двух треугольников. Площадь треугольника, определенную по координатам вершин, рассчитать с помощью функции.

Написать программу определения проводника с максимальным сопро-

29тивлением, если даны три проводника с удельным сопротивлением r1,r2,r3 и площадью сечения s1,s2,s3, используя функцию расчета сопротивления проводника.

Рассчитать значение y определив и использовав необходимую функцию

30y 1 sin 4 7 sin 5 3 sin 2 1 1 2 2 3 3 4 4

sin1 4

sin 7 5

sin 3 2 .

Средний уровень

Задание: написать блок-схему и программу согласно заданию.

Задача

вар.

Перевести заданное в десятичной системе число a в двоичную систему,

1используя функцию перевода.

Даны два натуральных числа. Найти наименьшее общее кратное этих

2чисел, используя функцию реализующую алгоритм Евклида.

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

3последних двух цифр. Использовать функцию для расчета суммы цифр двухзначного числа.

Написать программу определения максимального предельного заряда и потенциала для трех шаров с диаметром r1,r2, r3, используя функции

4расчета максимального предельного заряда и потенциала . Напряженность поля, при которой начинается ударная ионизация, равна 3 МВ/м. Для заданного массива экспериментальных данных рассчитать диспер-

5сию, используя функции определения среднего и дисперсии.

Получить все шестизначные счастливые номера. Счастливым называется

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

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

7налево), используя функцию распознавания таких чисел

76

Задача

 

вар.

 

 

 

 

Даны два логических выражения (X Y) (X Z)

и X ( Y Z) Y .

8 Составить таблицу истинности для этих выражений

(те для всех воз-

 

можных значений переменных X,Y,Z), используя функции представления

 

этих выражений

 

 

Рассчитать рабочий диапазон длин волн приемника, если емкость кон-

 

денсатора в его колебательном контуре плавно изменяется от 50 до 500

9пФ, а индуктивность катушки постоянна и равна 20 мкГн. Использовать функцию для определения длины волны

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

10сортировки.

Перевести заданное в двоичной системе число a в десятичную систему,

11используя функцию перевода.

 

Даны два логических выражения ( X Z) (Y Z) и

Y (X Z) Z .

12

Составить таблицу истинности для этих выражений

(те для всех воз-

можных значений переменных X,Y,Z), используя функции представления

 

этих выражений.

 

 

Отсортировать по возрастанию заданный массив чисел, исключив отри-

13цательные числа. Использовать функцию сортировки.

Даны два натуральных числа a и b, обозначающие соответственно числи-

14тель и знаменатель дроби. Сократить дробь, используя функцию определения наибольшего общего делителя.

В заданном массиве целых чисел найти максимальное и минимальное

15число, использую функции определения максимального и минимального числа.

Задан одномерный массив из 16 элементов .Сформировать двухмерный массив 4×4, используя функцию преобразования любого одномерного

16массива в двухмерный массив размерностью n×n с добавлением нулевых элементов.

Дана матрица-строка из 16 элементов , их всех ее элементов построить

17верхнюю треугольную матрицу, использую функцию построения верхней треугольной матрицы.

Дана матрица-строка из 16 элементов , из всех ее элементов построить

18нижнюю треугольную матрицу, используя функцию построения нижней треугольной матрицы.

Задан одномерный массив из 16 элементов. Сформировать двухмерный массив 4×4, в котором элементы увеличиваются слева направо, используя

19функции сортировки и преобразования одномерного массива в двухмерный массив.

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

20округления до ближайшего целого числа и функцию определения максимального.

77

Задача

вар.

 

 

Дана двухмерная матрица A размером n×m. Рассчитать нормы матрицы

 

||A||m и ||A||l матрицы, используя функции расчета этих норм (||A||m это

21максимальный элемент столбца, полученного из сумм модулей элементов строк матрица, ||A||l это максимальный элемент строки, полученной из сумм модулей элементов столбцов матрицы).

Дана двухмерная матрица A размером n×m .Рассчитать Евклидову норму

22

 

 

 

n m

 

 

 

ai2, j

матрицы ||A||е, используя функции расчета этой нормы (||A||е=

i 1 j 1 )

 

 

 

4

 

Вычислить значение определенного интеграла

S (x3 2x2 1)dx

1

по

 

n 1

 

 

 

23

S h (xi3 2xi2 1)

, где h=(4-1)/n, n – заданное число точек

формуле

i 0

разбиения интервала интегрирования, для n=10 и 100. Подынтегральную

функцию и формулу расчета интеграла представить в виде функций.

 

 

 

4

 

Вычислить значение определенного интеграла

S (3x3 2x2 x 5)dx

1

по

n 1

24формуле S hi 0 (3xi3 2xi2 x 5), где h=(4-1)/n, n=10 – заданное число точек разбиения интервала интегрирования, а также по формуле точного решения этого интеграла. Результаты вывести на экран. Подынтегральную функцию и формулу расчета интеграла представить в виде функций.

25Написать программу, создающую таблицу истинности для 2, 3 или 4 логических переменных, использую функцию создания таблицы.

Спомощью функции random(n) сгенерировать массив чисел от 0 до 50 и

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

Спомощью функции random(n) сгенерировать 3 массива чисел от 0 до 50

27и определить сумму элементов каждого массива. Для определения суммы использовать функцию.

Рассчитать коэффициент корреляции по формуле Бравэ-Пирсона

n

r 1 i 1 (xi x)(yi y)

n

x y

, для двух одномерных массивов x и y , полученных в

28результате эксперимента исследования связи между двумя характеристиками явления, x и y - среднеарифметическое, x и y - среднеквадратичное отклонение. Среднеарифметическое и среднеквадратичное отклонение рассчитать с помощью функции.

Перевести заданное в десятичной системе число a в восьмеричную

29систему, используя функцию перевода . n n

78

Задача

вар.

 

30

Перевести заданное в восьмеричной системе число a в десятичную

систему, используя функцию перевода.

Высокий уровень

Задание: написать блок-схему и программу согласно заданию. Следует заметить, что практически все задания этой подгруппы можно легко решить и без использования рекурсии. Данное обстоятельство связано с тем, что в заданиях рассматриваются действительно простейшие примеры рекурсии, легко сводимые к итерационным алгоритмам. Более того, в некоторых случаях использование рекурсии приводит к неэффективным алгоритмам (см, например, задания 4 и 5). Однако, именно на подобных примерах проще всего получить первоначальные навыки разработки рекурсивных алгоритмов.

Задача

вар.

 

 

Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа,

1

вычисляющие значения факториала N! и двойного факториала N!! соответ-

ственно (N > 0 — параметр целого типа). С помощью этих функций вы-

 

числить факториалы и двойные факториалы пяти данных чисел.

 

Описать рекурсивную функцию PowerN(x,n) вещественного типа, находя-

2

щую значение n-й степени числа x по формуле: x0 = 1, xn = x·xn–1 при n >

0, xn = 1 / x–n при n < 0 (x >= 0 – вещественное число, n – целое). С помо-

 

щью этой функции найти значения XN при 5 различных значениях N для

 

данного X .

 

Описать рекурсивную функцию SqrtK(x,k,n) вещественного типа, находя-

 

щую приближенное значение корня k-й степени из числа x по формуле:

3

y(0) = 1, y(n+1) = y(n) – (y(n) – x / y(n)k–1) / k, где y(n) обозначает

SqrtK(x,k,n) (x – вещественный параметр, k и n – целые; x > 0, k > 1, n > 0).

 

С помощью этой функции найти приближенные значения корня K

 

степени из X при 6 различных значениях N для данных X и K .

 

Описать рекурсивную функцию FibRec(N) целого типа, вычисляющую N

4

число Фибоначчи F(N) по формуле: F(1) = F(2) = 1, F(k) = F(k–2) + F(k–1),

k = 3, 4, ... С помощью этой функции найти пять чисел Фибоначчи с

 

указанными номерами и вывести эти числа вместе с количеством рекур-

 

сивных вызовов функции FibRec, потребовавшихся для их нахождения.

 

Описать рекурсивную функцию C(m,n) целого типа, находящую число

 

сочетаний из n элементов по m, используя формулу: C(0,n) = C(n,n) = 1,

5

C(m,n) = C(m,n–1) + C(m–1,n–1) при 0 < m < n (m и n — целые параметры; n

> 0, 0 <= m <= n). Дано число N и пять различных значений M. Вывести

 

числа C(M,N) вместе с количеством рекурсивных вызовов функции C,

 

потребовавшихся для их нахождения.

 

79

Задача

вар.

 

 

Описать рекурсивную функцию NOD(A,B) целого типа, находящую

6

наибольший общий делитель двух натуральных чисел A и B, используя

алгоритм Евклида: NOD(A,B) = NOD(B mod A,A), если A <> 0; NOD(0,B) =

 

B. С помощью этой функции найти наибольшие общие делители пар A и B,

 

A и C, A и D, если даны числа A, B, C, D.

 

Описать рекурсивную функцию MinRec(A,N) вещественного типа, которая

7

находит минимальный элемент вещественного массива A размера N, не

используя оператор цикла. С помощью функции MinRec1 найти мини-

 

мальные элементы массивов A, B, C размера NA, NB, NC соответственно .

 

Описать рекурсивную функцию Digits(S) целого типа, находящую количе-

8

ство цифр в строке S без использования оператора цикла. С помощью этой

 

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

 

Описать рекурсивную функцию Simm(S) логического типа, проверяющую,

9

является ли симметричной строка S, без использования оператора цикла. С

 

помощью этой функции проверить данные пяти строк .

 

Алгоритм сортировки фон Неймана. Упорядочить массив а1, а2,, аn по

 

неубыванию с помощью алгоритма сортировки слияниями:

 

а) каждая пара соседних элементов сливается в одну группу из двух

10

элементов (последняя группа может состоять из одного элемента);

 

б) каждая пара соседних двухэлементных групп сливается в одну четырех-

 

элементную группу и т.д. При каждом слиянии новая укрупненная группа

 

сортируется. Использовать функцию сортировки.

 

Задано положительное и отрицательное число в двоичной системе. Соста-

11

вить программу вычисления суммы этих чисел, используя функцию

 

сложения чисел в двоичной системе счисления.

 

Описать рекурсивную функцию Root (а, b, ε), которая методом деления

12

отрезка пополам находит с точностью ε корень уравнения f(x) = 0 на

отрезке [а, b] (считать, что ε > 0, а < b, f(a) - f(b) < 0 и f(x) — непрерывная и

 

монотонная на отрезке [а, b] функция) .

 

Описать функцию min(X) для определения минимального элемента линей-

13

ного массива X, введя вспомогательную рекурсивную функцию minl(k),

находящую минимум среди последних элементов массива X, начиная с k-

 

го.

 

Описать рекурсивную логическую функцию Simm(S,I,J), проверяющую,

14

является ли симметричной часть строки S, начинающаяся i-м и заканчи-

 

вающаяся j-м ее элементами .

 

Составить программу для нахождения числа, которое образуется из данно-

15

го натурального числа при записи его цифр в обратном порядке. Напри-

 

мер, для числа 1234 получаем результат 4321 .

 

Составить программу для перевода данного натурального числа в р-ичную

16

систему счисления (2 ≤ р ≤ 9).

 

 

80