- •Содержание
- •Пример оформления работы
- •Задание 2.
- •If (c In ['0'..'9']) Then {если очередной элемент - цифра}
- •Val(s,k,error); {преобразуем строку в число}
- •Задания на лабораторную работу №5
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Задание 2.
- •Задания на лабораторную работу №6
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Вариант 19
- •Вариант 20
- •Задание 2.
- •Задания на лабораторную работу №7
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 14
- •Вариант 15
- •Задание 2.
- •Задания на лабораторную работу №8
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Задание 2.
- •Задания на лабораторную работу №9
Задание 2.
Написать рекурсивную функцию, определяющую количество положительных элементов в заданном векторе vectorn.
1. Представим решение этой сложной задачи через решение более простой задачи посредством рекурсивного обращения. Чтобы подсчитать количество нужных нам элементов во всем векторе, содержащем n элементов, необходимо сначала сделать это для вектора, содержащего n–1 элемент, n-2 элемента, и так далее. Затем остается выполнить проверку последнего элемента, и добавить к результату единицу в том случае, если он окажется положительным.
-
Схема алгоритма решения задачи:
3. Код программы:
Program Variant_0;
Uses WinCrt;
Const n = 10; {задание размера вектора именованной константой}
Type TVect=Array [1..n] Of Integer;{описание нового типа}
Var i, count : Word;
v_min, v_max: Integer;
vector : TVect;
Function Count_pol(k: Word; Var AA: TVect): Word;
Var m: Word;
Begin
If (k=0)
Then m:=0 {если в векторе уже нет элементов}
Else
Begin
m:=Count_pol(k-1, AA);
If (AA[k]>0)
Then m:=m+1;
End;
Count_pol:=m;
End; {функции Count_pol}
Begin {головная программа}
Randomize; {запуск генератора случайных чисел}
WriteLn('Лабораторная работа №9_2');
WriteLn('Вариант №0');
WriteLn('ИС-11-1');
WriteLn('Пупкин Василий');
WriteLn;
WriteLn('Задайте диапазон случайных чисел');
Write('v_min=');
ReadLn(v_min);
Write('v_max=');
ReadLn(v_max);
For i:=1 To n Do {заполнение вектора случайными числами}
vector[i]:=Random(v_max-v_min + 1) + v_min;
WriteLn;
WriteLn('Исходный вектор:');
For i:=1 To n Do {вывод на экран исходного вектора}
Write(vector[i]:5);
WriteLn;
count:=Count_pol(n, vector);
WriteLn;
WriteLn('count=', count);
End.
-
Компиляция, отладка, тестирование и получение результата:
Задания на лабораторную работу №9
Исходные данные (значения переменных и строк) вводить с консоли. Размеры исходных векторов задавать именованными константами. Для задания элементов исходных векторов использовать генератор случайных чисел с заданным с консоли диапазоном от v_min до v_max. Вывести на экран исходные и выходные векторы. Никакие другие массивы (рабочие) кроме исходных и выходных, не использовать.
Внутри рекурсивных функций и процедур использовать циклы запрещается.
Вариант 1
Задание 1
Написать функцию для вычисления суммы цифр натурального числа n.
Задание 2
Написать функцию для вычисления максимального элемента заданного вектора vectorn.
Вариант 2
Задание 1
Написать функцию для вычисления количества цифр натурального числа n.
Задание 2
Написать функцию для вычисления суммы элементов заданного вектора vectorn.
Вариант 3
Задание 1
Написать функцию для вычисления цифрового корня натурального числа n.
Задание 2
Написать функцию для вычисления индекса максимального элемента заданного вектора vectorn.
Вариант 4
Задание 1
Задан первый член и разность арифметической прогрессии. Написать функция для нахождения n-го члена прогрессии.
Задание 2
Написать функцию, переводящую целое положительное число x из десятичной в двоичную систему счисления.
Вариант 5
Задание 1
Задан первый член и разность арифметической прогрессии. Написать функция для нахождения суммы n первых членов прогрессии.
Задание 2
Последовательность полиномов Лагерра определяется следующим образом:
L0(x) = 1,
L1(x) = x – 1,
Lk(x) = (x – 2k + 1)Lk-1(x) + (k-1)2Lk-2(x)
Написать функцию для вычисления n-го полинома Лагерра для заданного x.
Вариант 6
Задание 1
Задан первый член и знаменатель геометрической прогрессии. Написать функция для нахождения n-го члена прогрессии.
Задание 2
Написать функция для вычисления значения полинома Эрмита для заданных x и n>1:
H0(x) = 1,
H1(x) = 2x,
Hn(x) = 2xHn-1(x) – 2(n-1)Hn-2(x)
Вариант 7
Задание 1
Задан первый член и знаменатель геометрической прогрессии. Написать функция для нахождения суммы n первых членов прогрессии.
Задание 2
Написать функция для возведения вещественного x (x#0) в целую степень n:
xn = 1, если n=0,
xn = 1/x|n|, если n<0,
xn = x•xn-1, если n>0.
Вариант 8
Задание 1
Написать функция для вычисления значения функции Аккермана для неотрицательных n и m:
A(n, m) = m + 1, если n=0,
A(n, m) = A(n-1, 1), если m=0, n#0,
A(n, m) = A(n-1, A(n, m – 1)) , если m>0, n>0,
Например, для n=1, m=2:
A(1, 2) = 4
Задание 2
Написать функция для вывода на экран всех перестановок n различных натуральных чисел (n≤5).
Вариант 9
Задание 1
Написать функция для перестановки цифр натурального числа n в обратном порядке.
Задание 2
Написать функцию, вычисляющую сумму n корней вида:
Вариант 10
Задание 1
Написать процедуру для ввода с консоли последовательности чисел (конец последовательности – цифра ноль) и вывода ее на экран в обратном порядке. Массивы, строки, файлы, очереди, стеки, деревья не использовать.
Задание 2
Написать функцию, вычисляющую сумму n корней вида:
Вариант 11
Задание 1
Написать функция для вычисления значения функции Маккарти для неотрицательного n:
M(n) = n - 10, если n>100,
M(n) = M(M(n + 11)), если n<=100
Задание 2
Ввести шесть цифр. Написать функцию, которая расставляет между ними знаки арифметических операций (сложение, вычитание, умножение, деление без остатка) так, чтобы полученное выражение было равно заданному числу k.
Вариант 12
Задание 1
Написать функция для вычисления значения функции Кадью для неотрицательных x, y, z:
K(x, y, z) = z, если x = y,
K(x, y, z) = K(x, y+1, (y+1)z), если x#y
Задание 2
Написать функцию, переводящую целое положительное число x из десятичной в восьмеричную систему счисления.
Вариант 13
Задание 1
Задан прямоугольник со сторонами a и b. Разбиваем его на части квадратами. Написать функция для нахождения количества получившихся квадратов, если каждый раз выбирается самый большой квадрат.
Задание 2
Написать функцию, переводящую целое положительное число x из десятичной в 16-ричную систему счисления.
Вариант 14
Задание 1
Написать функция для вычисления числа сочетаний из n по m:
Cn0 = Cnn = 1,
Cnm = Cn-1m + Cn-1m-1, 0≤m≤n
Задание 2
Написать функцию, вычисляющую сумму n вложений вида:
s = cos(1+sin(2+cos(3+sin(4+cos(5+ …)…))
Вариант 15
Задание 1
Задано целое положительное число x длиной не более 20 цифр. Написать функцию, расставляющую между некоторыми его цифрами знаки сложения и вычитания так, чтобы полученное выражение равнялось заданному n:
x = 123456789
n = 171
12 + 34 + 56 + 78 - 9 = 171
Задание 2
Написать функцию, определяющую, является ли заданная строка палиндромом.