Задача 1
type ряд = file of integer;
Описать процедуру p(f,g) от двух файлов типа ряд, которая в пустой файл f переписывает положительные элементы файла g.
Указание: введите файл g (последний элемент равен 0). Выполните процедуру p(f,g). Распечатайте файл f.
Задача 2
Пусть для целого n>0 функция s(n) равна сумме цифр числа n. Дано m>0. Упорядочить все числа n от 1 до m в порядке невозрастания значений s(n). Указание: использовать только один массив длиной m.
Задача 3
Напишите рекурсивную подпрограмму, которая печатает в обратном порядке заданную строку.
Задача 4
Напишите программу для графической иллюстрации сортировки массива алгоритмом простого выбора. Массив изобразите в виде диаграммы – каждый элемент массива представляется в виде столбика, высота которого пропорциональна значению элемента. Визуализация сортировки сводится к показу массива после каждого перемещения элементов.
Вариант 2
Задача 1
type fr = file of real;
Описать процедуру predlast(f), значением которой является предпоследний элемент файла f, имеющего тип fr и содержащего не менее двух элементов.
Указание: введите файл f (последний элемент = 0) и вычислите функцию predlast(f).
Задача 2
Дан массив a: array [1..n] of integer. Упорядочить элементы массива а по неубыванию в соответствии со следующим критерием: элемент x считается «больше» элемента y, если первая цифра числа x больше первой цифры y.
Задача 3
type
reals = file of real;
var f : reals;
Опишите рекурсивную функцию sum без параметров для нахождения суммы элементов файла f.
Задача 4
Построить эпициклоиду – кривую, заданную параметрическим уравнением
x = (a+b) cos(t) – a cos((a+b) t/a),
y = (a+b) sin(t) – a sin((a+b) t/a), a>0, b>0,
b/a – целое положительное число, t принадлежит интервалу [0,2p].
Вариант 3
Задача 1
type rad = file of integer;
Описать процедуру p(f,g) от двух файлов типа rаd, которая из файла f переписывает в пустой файл g сначала все положительные числа, а потом все отрицательные.
Указание: введите файл f (последний элемент равен 0). Выполните процедуру p(f,g). Распечатайте файл g.
Задача 2
Пусть для целого n>0 функция d(n) равна наименьшему делителю числа n, не равному 1. Дано m>0. Упорядочить все числа n от 1 до m в порядке неубывания значений d(n).
Указание: использовать только один массив длиной m.
Задача 3
Описать рекурсивную функцию letter (s), которая подсчитывает количество букв в строке s.
Задача 4
Построить лемнискату – кривую, уравнение которой в полярных координатах
r = , a>0.
Вариант 4
Задача 1
type seria = file of integer;
Описать функцию prod(s) с вещественным значением, подсчитывающую произведение ненулевых элементов файла s.
Указание: введите файл s (последний элемент равен 0) и напечатайте значение функции prod(s).
Задача 2
Дана действительная матрица размером M´N. Пусть для каждой строки матрицы определена функция f(a), равная сумме нечетных элементов строки a. Упорядочить (переставить) строки матрицы по неубыванию в соответствии со следующим критерием: строка a считается «больше» строки b, если f(a) > f(b).
Используйте алгоритм простого выбора.
Задача 3
Напишите рекурсивную программу, которая n раз выводит на экран текст истории о попе и его собаке (рассказ в рассказе).
Задача 4
Построить строфоиду – кривую, заданную параметрическим уравнением
x = a(t 2 – 1)/(t 2 + 1),
y = at (t 2 – 1)/(t 2 +1), a>0,
t принадлежит интервалу [– ¥, + ¥].
Вариант 5
Задача 1
type seria = file of integer;
var s:seria;
Описать функцию max(s), вычисляющую значение максимального элемента файла s.
Указание: введите файл s (последний элемент равен 0) и напечатайте значение функции max(s).
Задача 2
Дана целочисленная матрица размером M´N. Пусть для каждой строки матрицы определена функция f(a), равная количеству простых чисел среди элементов строки a. Упорядочить (переставить) строки матрицы по невозрастанию в соответствии со следующим критерием: строка a считается «больше» строки b, если f(a) > f(b). Используйте алгоритм простого выбора.
Задача 3
Во входном файле задана непустая последовательность положительных вещественных чисел, за которой следует отрицательное число. Описать рекурсивную функцию sum без параметров для нахождения суммы этих положительных чисел.
Задача 4
Построить кривую «улитку Паскаля» по заданному параметрическому уравнению
x = a cos 2 (t) + b cos(t),
y = a cos(t) sin(t) + b sin(t), a>0, b>0,
t принадлежит интервалу [0, 2p].
Рассмотреть три случая:
1) b >= 2a (см. рис.); 2) a < b< 2a; 3) a > b.
Вариант 6
Задача 1
Описать логическую функцию check(s) для текстового файла s, проверяющую, содержит ли файл s латинские буквы.
Указание: введите файл s (последний элемент в файле '.') и вычислите значение функции check(s).
Задача 2
Дана целочисленная матрица размером M´N. Пусть для каждой строки матрицы определена функция f(a), равная сумме составных чисел, являющихся элементами строки a. Упорядочить (переставить) строки матрицы по неубыванию в соответствии со следующим критерием: строка a считается «больше» строки b, если f(a) > f(b). Используйте алгоритм простого выбора.
Задача 3
type
reals = file of real;
var f : reals;
Напишите рекурсивную программу, которая печатает сначала все отрицательные элементы этого файла, а затем положительные (в любом порядке).
Задача 4
Соединить конечное множество точек на плоскости замкнутой ломаной линией без самопересечений с вершинами в этих точках. (Полный перебор не делать; ответом будет порядок обхода точек плоскости.)
Указание: перейти к полярным координатам и упорядочить точки по значениям угла, а для точек с одинаковым значением угла – по расстоянию до полюса.
Вариант 7
Задача 1
Для файла s, состоящего из целых чисел, определите процедуру, которая находит значения максимального и минимального элементов файла s.
Указание: введите файл s (последний элемент равен 0) и напечатайте значения максимального и минимального элементов файла s.
Задача 2
Дана действительная матрица размером M´N. Пусть для каждой строки матрицы определена функция f(a), равная индексу наименьшего элемента в строке a. Упорядочить (переставить) строки матрицы по возрастанию в соответствии со следующим критерием: строка a считается «больше» строки b, если f(a) > f(b). Используйте алгоритм простого выбора.
Задача 3
const n=...;
type vector = array [1..n] of real;
Описать функцию min (x) для определения минимального элемента вектора x, введя вспомогательную рекурсивную функцию min1 (k), находящую минимум среди последних элементов вектора x, начиная с k-го.
Указание: пусть min(x) – функция, которая вычисляет минимум среди элементов массива x, а min1(k) – функция, которая вычисляет минимум среди элементов xk, xk+1, …, xn массива x (для этой функции массив x есть глобальная переменная, определенная в главной программе).
Имеем равенство
min(x) = min1(1).
Определим функцию min1(k) рекурсивно:
1) если k=n, то функция возвращает результат xn;
2) если k<n, то функция возвращает наименьшее из двух чисел xk и min1(k+1) (второе число получается при рекурсивном вызове).
Задача 4
Даны целые числа t1, t2, ... t31, – задающие график температур за март месяц. Построить график температур. Отрезки прямых, лежащие выше 0 градусов Цельсия и лежащие ниже 0 градусов Цельсия, должны быть окрашены в разные цвета.
Вариант 8
Задача 1
type rad = file of 1..maxint;
Описать процедуру prim(f,n), записывающую в файл f все простые числа 2,3,5,7,11,13,17..., не превосходящие целого положительного числа n.
Указание: введите n. Выполните процедуру prim(f,n). Распечатайте файл f.
Задача 2
Дана действительная матрица размером M´N. Пусть для каждой строки матрицы определена функция s(a), равная разности между максимальным и минимальным элементами строки a.
Упорядочить (переставить) строки матрицы по неубыванию значений функции s(a). Используйте алгоритм простого выбора.
Задача 3
const n=...;
type vector = array [1..n] of real;
Описать функцию max (x) для определения максимального элемента вектора x, введя вспомогательную рекурсивную функцию max1 (k), находящую максимум среди первых k элементов вектора x.
Указание: пусть max(x) – функция, которая вычисляет максимум среди элементов массива x, а max1(k) – функция, которая вычисляет максимум среди элементов xk, xk+1, …, xn массива x (для этой функции массив x есть глобальная переменная, определенная в главной программе).
Имеем равенство
max (x) = max1(1).
Определим функцию max1(k) рекурсивно:
3) если k=n, то функция возвращает результат xn;
4) если k<n, то функция возвращает наибольшее из двух чисел xk и max1(k+1) (второе число получается при рекурсивном вызове).
Задача 4
Построить кривую кардиоиду по заданному параметрическому уравнению
x = a cos t (1+ cos t),
y = a sin t (1 + cos t), a>0, t Î [0, 2p).
Вариант 9
Задача 1
type ряд = file of integer;
Описать процедуру append(f,g,h) от трех файлов типа ряд, которая записывает в файл f сначала все элементы файла g, а затем все элементы файла h.
Указание: введите два файла g и h. Выполните процедуру append(f,g,h). Напечатайте файл f.
Задача 2
Дана матрица A из целых чисел размером M´N. Переставить строки матрицы так, чтобы строки стали расположены по возрастанию в лексикографическом порядке.
Задача 3
Дан массив a : array [1..n] of integer;
Напишите рекурсивную программу для вычисления суммы
Указание:
Пусть функция f(k) вычисляет сумму 1/a[1]+1/a[2]+…+1/a[k].
Нам надо вычислить f(n).
Определим f(k) рекурсивно:
1) если k=1, то f(k)=1/a[1];
2) если k>1, то значение функции равно сумме 1/a[k] и f(k–1).
Задача 4
Построить кривую циссоиду по заданному параметрическому уравнению
x = a t2/(1+t2),
y = a t3 /(1 + t2), a>0, t Î (–¥, ¥).
Вариант 10
Задача 1
Type fr = file of real;
Описать функцию s3(f), значением которой является сумма последних трех элементов файла f, имеющего тип fr и содержащего не менее 3 элементов.
Указание: введите файл f (последний элемент = 0) и вычислите функцию s3(f).
Задача 2
Дана матрица A из целых чисел размером M´N. Переставить строки матрицы так, чтобы строки стали расположены по убыванию в лексикографическом порядке.
Задача 3
type
reals = file of real;
var f : reals;
Опишите рекурсивную функцию sum (n) для нахождения суммы
, где a[ i ] – элемент файла f.
Указание.
Пусть функция f(k) вычисляет сумму a[1]n+a[2]n+…+a[k]n.
Нам надо вычислить f(n).
Определим f(k) рекурсивно:
1) если k=1, то f(k)=a[1]n;
2) если k>1, то значение функции равно сумме a[k]n и f(k–1).
Задача 4
Построить спираль вокруг начала координат с n витками и внешним радиусом r; начальное направление спирали образует с осью x угол a. Параметрическое представление спирали:
x = r cos t,
y = r sin t,
r = t/2, a£t£2p n.
Вариант 11
Задача 1
type seria = file of integer;
var s:seria;
Описать функцию poz(s), подсчитывающую количество положительных чисел в файле s.
Указание: введите файл s (последний элемент равен 0) и напечатайте значение функции poz(s).
Задача 2
Дана действительная матрица размером M´N. Упорядочить (переставить) строки матрицы по убыванию значений наибольших элементов строк. Используйте алгоритм простого выбора.
Задача 3
Напишите рекурсивную программу для вычисления суммы
.
Указания.
Пусть функция f(k) вычисляет сумму a[1]*a[2]*…a[k].
Нам надо вычислить f(n).
Определим f(k) рекурсивно:
1) если k=1, то f(k)=a[1];
2) если k>1, то значение функции равно сумме a[k] и f(k–1).
Задача 4
Напишите программу для графической иллюстрации сортировки массива алгоритмом «пузырька». Массив изобразите в виде диаграммы – каждый элемент массива представляется в виде столбика, высота которого пропорциональна значению элемента. Визуализация сортировки сводится к показу массива после каждого перемещения элементов.
Вариант 12
Задача 1
Описать процедуру letter(s,t), которая записывает в текстовый файл t все латинские буквы из строки s.
Указание: введите строку s. Выполните процедуру letter(s,t) и распечатайте элементы файла t.
Задача 2
Дана действительная матрица размером M´N. Упорядочить (переставить) строки матрицы по возрастанию значений первых элементов строк. Используйте алгоритм простого выбора.
Задача 3
Функция f (n) определена для целых положительных чисел следующим образом:
Вычислить f (k) для k=15, 16,..., 30.
Задача 4
Напишите программу для графической иллюстрации сортировки массива алгоритмом простых включений. Массив изобразите в виде диаграммы – каждый элемент массива представляется в виде столбика, высота которого пропорциональна значению элемента. Визуализация сортировки сводится к показу массива после каждого перемещения элементов.
Вариант 13
Задача 1
type reals = file of real;
Описать процедуру p(f,g,h) от трех файлов типа reals, которая переписывает из файла f в непустой файл g все элементы, меньшие среднего арифметического всех элементов файла f, и в непустой файл h записывает все остальные числа.
Указание: введите файл f (последний элемент = 0). Выполните процедуру p(f,g,h). Распечатайте файлы g и h.
Задача 2
Дана действительная матрица размером M´N. Упорядочить (переставить) строки матрицы по убыванию сумм элементов строк. Используйте алгоритм простого выбора.
Задача 3
Напишите рекурсивную программу для вычисления суммы
.
Указание:
Пусть функция f(k) вычисляет сумму a[1]*a[2]*…a[k].
Нам надо вычислить f(n).
Определим f(k) рекурсивно:
1) если k=1, то f(k)=a[1];
2) если k>1, то значение функции равно сумме a[k] и f(k–1).
Задача 4
Напишите программу для графической иллюстрации сортировки массивов алгоритмом слияния. Массивы изобразите в виде диаграммы – каждый элемент массива представляется в виде столбика, высота которого пропорциональна значению элемента. Визуализация сортировки сводится к показу массивов после каждого перемещения элементов.
Вариант 14
Задача 1
Дан текстовый файл, в котором строки содержат как латинские буквы, так и цифры. Необходимо создать другой текстовый файл, содержащий строки из первого, преобразованные по следующему принципу: в начале строки расположены все буквы исходной строки, а затем все цифры (в том же порядке).
Описать процедуру letter(s,t), которая записывает в текстовый файл t сначала все латинские буквы из строки s, а затем все цифры.
Указание: введите исходный файл. Выполните процедуру letter(s,t) и распечатайте элементы файла t.
Задача 2
Дана действительная матрица размером M´N. Упорядочить (переставить) строки матрицы по убыванию значений последних элементов строк. Используйте алгоритм простого выбора.
Задача 3
Дан массив a : array [1..n] of integer;
Напишите рекурсивную программу для вычисления произведения
.
Указание.
Пусть функция f(k) вычисляет произведение a[1]*a[2]*…a[k].
Нам надо вычислить f(n).
Определим f(k) рекурсивно:
3) если k=1, то f(k)=a[1];
4) если k>1, то значение функции равно произведению a[k] и f(k–1).
Задача 4
Напишите программу, которая имитирует движение велосипеда.
Указание: напишите процедуру отображения велосипеда с параметрами. В качестве параметра возьмите координаты какой-нибудь точки велосипеда (например, середина педалей – x1, y1). Назовем данную точку «центральной». Построение велосипеда ведите относительно центральной точки (например, чтобы нарисовать колесо велосипеда, можно воспользоваться следующим действием: circle(x1+50,y1,25)). Перемещение велосипеда по экрану можно получить, реализовав, например, следующий алгоритм:
1. Задаем начальные значения переменным x1 и y1.
2. Рисуем велосипед заданным цветом с данными значениями x1 и y1 (вызываем процедуру рисования велосипеда).
3. Изменяем цвет линий на цвет, соответствующий цвету фона.
4. Рисуем велосипед измененным цветом с теми же значениями x1 и y1 (вызываем процедуру рисования велосипеда).
5. Изменяем координаты x1.
6. Изменяем цвет линий на цвет, соответствующий цвету велосипеда.
7. Рисуем велосипед заданным цветом с новыми значениями x1 и y1 (вызываем процедуру рисования велосипеда).
8. Повторяем действия 2–7.
Вариант 15
Задача 1
type seria = file of integer;
var s:seria;
Описать функцию poz(s, n), подсчитывающую количество положительных и отрицательных чисел в файле s.
Указание: введите файл s (последний элемент равен 0) и напечатайте значение функции poz(s, n).
Задача 2
Дана целочисленная матрица размером M´N. Пусть для каждой строки матрицы определена функция f(a), равная сумме простых чисел, являющихся элементами строки a. Упорядочить (переставить) строки матрицы по неубыванию в соответствии со следующим критерием: строка a считается «больше» строки b, если f(a) > f(b). Используйте алгоритм простого выбора.
Задача 3
Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s.
Задача 4
Написать программу, вызывающую пульсацию окружности в центре экрана. Окружность должна увеличиваться в диаметре до тех пор, пока не достигнет границ экрана, затем она начинает сжиматься. Процесс должен циклически повториться, при этом необходимо обеспечить чередование цветов при увеличении и уменьшении диаметра окружности.