§ 7. Понятие вспомогательного алгоритма

Упражнения

  

1. Напишите программы для решения задач. Оформите вычисление указанных функций в качестве подпрограмм.

1. Дано вещественное значение x. Получить

begin mathsize 16px style f space left parenthesis 2 x comma space 3 right parenthesis space plus space f space left parenthesis 3 comma 5 space – space x right parenthesis comma space где space f space left parenthesis a comma space b right parenthesis equals fraction numerator 2 a space – b over denominator 5 space – space a end fraction. end style

2. Даны вещественные значения t и s. Получить

f space left parenthesis t comma space – space 2 s comma space 1.17 right parenthesis space plus space f space left parenthesis 2.2 comma space t comma space t space – space s right parenthesis comma space где space f space left parenthesis a comma space b comma space c right parenthesis equals fraction numerator 2 a space – b space plus space square root of c over denominator 5 space plus space open vertical bar с close vertical bar end fraction.

3. Дано действительное число y. Получить

fraction numerator 1.7 f space left parenthesis 0.25 comma space 3 right parenthesis space plus 2 space f space left parenthesis 1 plus y comma space 4 right parenthesis over denominator 6 space – space f left parenthesis y squared space – space 2 comma space 5 right parenthesis end fraction comma space где space f space left parenthesis x comma space k right parenthesis equals fraction numerator x to the power of 2 k space plus space 1 end exponent over denominator left parenthesis 2 k right parenthesis factorial end fraction.

2. Напишите программы для решения задач, используя только функции, описанные в примере 7.5, и арифметические действия (нельзя использовать ветвления, циклы и другие функции).

1. Даны три различных числа. Вывести то, которое не равно минимальному и не равно максимальному из введенных чисел.

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

2. Даны четыре различных числа. Вывести их в порядке возрастания.

Подсказка. Найти min(max(a, b)), max(c, d)  и max(min(a, b)), min(c, d).

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

3. Напишите программы для решения геометрических задач.

1. Треугольник задан координатами своих вершин. Найти периметр треугольника. Вычисление длины отрезка оформить в виде подпрограммы.
2. Четырехугольник задан координатами своих вершин. Найти периметр четырехугольника. Вычисление длины отрезка оформить в виде подпрограммы.
3. Выпуклый четырехугольник задан длинами своих сторон и диагональю. Найти площадь четырехугольника как сумму площадей двух треугольников. Вычисление площади треугольника оформить в виде подпрограммы.
4. Выпуклый пятиугольник задан длинами своих сторон и двумя диагоналями, проведенными из одной вершины. Найти площадь пятиугольника как сумму площадей трех треугольников. Вычисление площади треугольника оформить в виде подпрограммы.

4. В примерах 7.9, 7.10, 7.11 и 7.14 приведены различные реализации алгоритма Евклида. Протестируйте эти алгоритмы на различных наборах чисел. Сравните время работы алгоритмов. Время можно посмотреть в консольном окне (программу скомпилируйте в режиме debug).

1. Переберите значения а и b от 2 до 100 000. Найдите НОД(a, b) для всех возможных пар. Значения а и b оба возрастают от 2 до 100 000. 
2. Переберите значения а и b от 2 до 100 000. Найдите НОД(a, b) для всех возможных пар. Значения a возрастают от 2 до 100 000, значения b  убывают от 100 000 до 2. 
3. Значения а и b получают случайным образом. Количество значений  100 000, диапазон [2; 1000]. 
4. Значения а и b получают случайным образом. Количество значений  100 000, диапазон [2; 1 000 000]. 

5. Используя функцию для вычисления НОД(a, b), решите следующие задачи:

1. Напишите программу, которая найдет НОД четырех чисел.
2. 
Напишите программу, которая найдет НОК (наименьшее общее кратное) двух чисел.
3. Вводятся числитель и знаменатель правильной дроби. Напишите программу, которая сократит дробь.
4. Две правильные дроби заданы своими числителями и знаменателями. Напишите программу, которая найдет их сумму. Ответ выведите в виде смешанной дроби.
5. Заданы два натуральных числа в десятичной системе счисления, состоящие из единиц. В первом числе ровно n единиц, а во втором их ровно m. Вводятся числа n и m. Напишите программу, которая найдет НОД чисел, состоящих из n и m единиц соответственно.
6. Катя решила пригласить к себе в гости n друзей. Так как ее друзья очень любят фрукты, то в качестве угощения для них она купила m одинаковых апельсинов. Она хочет разрезать каждый апельсин на одинаковое число равных долек так, чтобы их можно было распределить между гостями (сама Катя апельсины есть не будет) и всем гостям досталось поровну долек. Напишите программу, которая вычисляет минимальное количество долек, на которое необходимо разрезать каждый апельсин, чтобы были выполнены указанные выше условия. Пример: при n = 2, m = 5 ответ 2.
7. Параллель десятых классов написала контрольную работу. В результате ровно a % учащихся получили «отлично», ровно b % — «хорошо», ровно c % — «удовлетворительно», а остальные % написали контрольную  неудовлетворительно. Какое минимальное количество учащихся должно быть в параллели десятых классов для того, чтобы могли получиться такие результаты? Вводятся 4 целых числа от 0 до 100:
a, b, c, d (a + b + c + d = 100). Выведите единственное целое положительное число — минимальное возможное количество учащихся в параллели.

6. Даны два натуральных числа n и m (n < m). Написать программу, которая выведет все числа, принадлежащие отрезку [n; m] и удовлетворяющие условиям, описанным ниже. Предусмотреть случай, когда таких чисел нет. Проверку одного числа оформить в виде подпрограммы.

1. Число является «хорошим». (Натуральное число назовем хорошим, если оно делится на сумму своих цифр.) 
2. Цифры числа расположены в порядке возрастания. 
3. Число является палиндромом (перевертышем) четной длины. 
4. Число является «счастливым» — сумма цифр числа, стоящих на первых k местах, равна сумме цифр числа, стоящих на последних k местах. (k — половина количества цифр числа.) 
5. Число является «счастливым» — сумма цифр числа, стоящих на нечетных местах, равна сумме цифр числа, стоящих на четных местах.
6. Число является числом Армстронга. (Натуральное число из k цифр является числом Армстронга, если сумма его цифр, возведенных в k-ю степень, равна самому числу, например 153 = 13 + 53 + 33, k = 3.)
7. Число является треугольным. (Треугольное число — число кружков, которые могут быть расставлены в форме правильного треугольника. Представляется в виде fraction numerator k left parenthesis k space plus space 1 right parenthesis over denominator 2 end fraction,  например число begin mathsize 16px style 15 space equals space fraction numerator 5 space asterisk times space 6 over denominator 2 end fraction end style.)

7. Напишите программы для решения задач, оформив подходящие подпрограммы.

1. Треугольник задан длинами своих сторон. Найти длины его высот. 
2. Даны координаты вершин треугольника и координаты некоторой точки внутри него. Найти расстояние до ближайшей стороны треугольника.

Подсказка. Это расстояние является высотой одного из полученных треугольников.

3. Даны координаты вершин четырехугольника и координаты некоторой точки внутри него. Найти расстояние до ближайшей вершины четырехугольника. 
4. Три прямоугольника со сторонами, параллельными осям координат, заданы координатами своих диагоналей. Выписать все четыре вершины для каждого из прямоугольников и найти их площади.
5. Два прямоугольника со сторонами, параллельными осям координат, заданы координатами своих диагоналей. Проверить, верно ли, что прямоугольник с меньшей площадью целиком находится внутри прямоугольника с большей площадью. Если «да», то найти площадь получившейся «рамки».