Читайте также:
|
|
выполнения следующей программы:
var X, Y: integer;
procedure p1(A: integer; var B: integer);
begin
B:=sqr(3*A)-6
end;
begin
X:=3; p1(X, Y);
write(X, Y)
end.
7.17 Определить значения элементов массива А, которые будут выведены на экран в результате выполнения следующей программы:
const n=8;
type mas = array[1..n] of real;
var A: mas; j: integer;
procedure p2(var B: mas);
var i: integer;
begin
for i:= 2 to n do
B[i]:= B[i-1] + 1.0
end;
begin
for j:= 1 to n do A[j]:=0.0;
p2(A);
for j:= 1 to n do writeln(A[j])
end.
7.18 Определить значения переменных X1, X2, A1, A2, которые будут выведены на экран в результате выполнения следующей программы:
var X1, X2: integer;
procedure p1(A1: integer; var A2: integer);
begin
A1:= A1 * A1;
A2:= A1 * A1 + A1;
write(A1, A2)
end;
procedure p2(var A1, A2: integer);
begin
A1:= A1 * A1;
A2:= A1 * A1 + A1;
writeln(A1, ‘ ‘, A2)
end;
begin
X1:= 1; X2:= 2;
p1(X1, X2);
write(X1, ‘ ‘, X2);
X1:= 2; X2:= 3;
write(X1, ‘ ‘, X2)
end.
7.19 Может ли функция иметь такую структуру:
FUNCTION F: Real;
Label 1, 2;
Var A:Byte;
Begin
Тело функции
End;
приложение А
1. Напишите программу вычисления среднего геометрического модулей двух введенных с клавиатуры целых чисел X и Y. Программа должна использовать цикл WHILE DO.Условие выхода из цикла – значение числа, равное 999. (Средним геометрическим называется корень квадратный из произведения двух чисел.)
2. Напишите программу вычисления выражения y=(tg(x)+sin(x))*ecos(x) при x=3.7. Результат выведите в формате 5:2.
3. Напишите программу, которая находит первое отрицательное число последовательности: A=Sin(i/100).i=1,2,3…
4. Напишите программу, которая с помощью функции Chr выводит на экран кодовую таблицу ASCII. После задержки в 5 сек. очистите экран.
5. Напишите функцию преобразования градусной меры в радианную.6. Напишите функцию преобразования времени выраженного в сутках, часах, минутах и секундах просто в секунды.7. Даны действительные числа s, t. Получить g(1.2,-s) + g(t,s) - g(2s-1,st), где .8. Даны действительные числа x,y. Определить u = min(x,y), v= min(xy, x+y), z = min(u+v2, 3.14).9. Напишите программу, выводящую на экран 10 строк по 5 случайных чисел из диапазона 0..36.
10. С помощью цикла for и функции odd напишите программу, выводящую все нечетные числа из диапазона 1..n.
11. Напишите программу, которая по значениям двух катетов вычисляет гипотенузу и площадь треугольника.
12. Напишите программу вычисления расстояния между двумя точками с заданными координатами X1,Y1,X2,Y2.
13. Напишите функцию возведения в степень по формуле: AB=Exp(Ln(A)*B) и используйте ее в программе для возведения в 4-ю степень вещественного числа 2,87.
14. Определите наименьший общий делитель трех натуральных чисел.
15. Данные действительные числа s,t. Напишите программу вычисления выражения f(t,-2s, 1.17)+f(2.2, t, s-t), где f(a, b, c) = (2a – b – sin (c)) / (5+|c|).
16. Создайте программу перевода двоичной записи натурального числа в десятичную.
17. Создайте программу сокращения дроби M/N, где M,N – натуральные числа.
18. Создайте программу для вычисления суммы квадратов простых чисел, лежащих в интервале (M, N).
19. Создайте программу для подсчета количества четных цифр, используемых в записи N-значного числа M.
20. Создайте программу вычисления суммы трехзначных чисел, в десятичной записи которых нет четных цифр.
21. Создайте программу вывода на экран всех натуральных чисел, не превосходящих N и делящихся на каждую из своих цифр,
22. Создайте программу нахождения наименьшего натурального N-значного числа x(x>=10), равного утроенному произведению своих цифр.
приложение Б
1. Дан целочисленный массив, состоящий из 12 элементов. Определить сумму элементов с чётными индексами и сумму элементов с нечётными индексами.
***********************************
* Программа
* вычисления математических функций
* Автор: Фамилия. И.О.
************************************
Заставка должна выводиться на очищенный экран, оставаться на экране в течение 3 сек. С последующей очисткой экрана. Вызовите процедуру Zastavka в начале программы.
11. Дан целочисленный массив, состоящий из 10 элементов. Все положи тельные элементы массива увеличить вдвое.12. Дан символьный массив, состоящий из 10 элементов. Преобразовать все маленькие латинские символы в большие.13. Дан символьный массив А, состоящий из 8 элементов. Получить целочисленный массив В, элементами которого являются номера символов по таблице ASCII. 14. Составить программу удаления лишних пробелов в строке.15. Описать процедуру InvertDigits(K), меняющую порядок следования цифр целого положительного числа К на обратный (К – параметр целого типа, являющийся одновременно входным и выходным). С помощью этой процедуры поменять порядок следования цифр на обратный для каждого из пяти данных целых чисел.16. Описать процедуру AddRightDigit(D,K), добавляющую к целому положительному числу К справа цифру D (D – входной параметр целого типа, лежащий в диапазоне 0-9, К – параметр целого типа, являющийся одновременно входным и выходным). С помощью этой процедуры последовательно добавить к данному числу К справа данные цифры D1 и D2, выводя результат каждого добавления.17. Описать процедуру Swap(X,Y), меняющую содержимое переменных X и Y (X и Y – вещественные параметры, являющиеся одновременно входными и выходными). С помощью этой процедуры для переменных А, В, С и D последовательно поменять содержимое следующих пар: А и В, С и D, В и С и вывести новые значения А, В, С и D.18. Описать процедуру DigitCountSum(K,C,S), находящую количество С цифр целого положительного числа К, а также их сумму S (K – входной, C, S – выходные параметры целого типа). С ее помощью найти количество и сумму цифр для каждого из пяти данных целых чисел.19. Описать процедуру SortInc3 (A,B,C), меняющую содержимое переменных А, В, С таким образом, чтобы их значения оказались упорядоченными по возрастанию (A,B,C – вещественные параметры, являющиеся одновременно входными и выходными). С ее помощью упорядочить по возрастанию два набора из трех чисел: (A1,B1,C1) и (A2,B2,C2).20. Нарисовать на экране с помощью одной процедуры три окна с различными заголовками.
приложение В
10 маленьких негритят пошли купаться в море,
10 негритят резвились на просторе.
Один из них пропал – и вот вам результат:
(небольшая пауза)
9 маленьких негритят пошли купаться в море,
9 негритят резвились на просторе.
Один из них пропал – и вот вам результат:
(небольшая пауза)
…
1 маленький негритенок пошел купаться в море,
1 негритенок резвился на просторе.
Пропал и он – и вот вам результат:
(небольшая пауза)
Нет больше негритят!
7. В массиве Х(n) целых чисел найти минимальное. Поиск осуществить с помощью рекурсии.8. Дано целое число N>0. Написать рекурсивную функцию, выводящую на печать числа 1, 2, …, N.9. Написать рекурсивную функцию, выводящую на печать m строк, состоящих из n символов каждая.10. Написать рекурсивную функцию, вычисляющую произведение элементов массива A(N).11. Дано целое число N>0. Написать рекурсивную функцию, выводящую на печать числа N, N-1, …, 2, 1.12. Написать рекурсивную функцию, вычисляющую сумму первых n целых чисел, хранящихся в массиве, длина которого больше или равна n.13. Написать рекурсивную функцию, выводящую на печать строку символов в обратном порядке.14. Проанализируйте следующее рекурсивное соотношение: f(1)=1; f(2)=1; f(3)=1; f(4)=3; f(5)=5; f(n)=n-1+3*f(n-5) для всех n>5. Вычислите функцию f(n) для следующих значений n: 6, 7, 12, 15.15. Написать рекурсивную функцию вычисления значения xn, использую следующее рекурсивное соотношение: x0=1; хn=(хn/2)2, если n>0 и n – четное число; хn=х*(хn/2)2, если n>0 и n – нечетное число.16. Определите рекуррентное соотношение и напишите программу определения следующих трёх членов последовательности: 1, 1, 0, -1, 2, -3, 5, -8, 13, -21,...17. Рекуррентное соотношение2x{i-1} a
x{i} = ------- + ---------, x{1} = 1, a>0
3 3x^2{i-1}
можно использовать для быстрого вычисления кубического корня из a, так как элементы последовательности при увеличении i очень быстро приближаются к кубическому корню из a. Составьте программу вычисления кубического корня из a.
18. Напишите рекурсивную функцию fib для вычисления чисел Фибоначчи: 1, 1, 2, 3, 5, 8,13…19. Написать рекурсивную функцию, позволяющую возводить данное число в целую неотрицательную степень.20. Написать рекурсивную функцию, позволяющую вычислять наибольший общий делитель для двух данных чисел.ПРИЛОЖЕНИЕ Г
t(mas) + 98
------------- * t(mas),
t(mas) - 98
где t(mas) - среднее арифметическое элементов массива.
[1] Итальянский математик, известный ещё как Леонардо Пизанский, живший на рубеже XII и XIII веков. Ряд Фибоначчи впервые был применен для моделирования размножения кроликов. Кроме того, ряд имеет тайную силу: если последовательно делить два текущих последних члена ряда друг на друга, то будем получать результаты, известные под названием «золотого сечения».
[2] В соответствии с легендой, когда монахи ханойского храма переместят 64 диска со стержня 1 на стержень 3, наступит конец света. Количество перемещений Р для N дисков подсчитывается по следующей рекурсивной формуле: P(N) = 2 × P(N-1) + 1. В конце концов нужно достичь P(1)=1. Например:
Если N=3, то P(3) = 2 × P(2) +1 = 2 × (2 × 1 + 1) + 1 = 7.
Если N=10, то P(10) = 1023.
Если N=20, то P(20) = 104857.
Если N=64, то P(64) = 18 446 744 073 709 551 615. Если монах будет перемещать диски со скоростью 1 диск в секунду, то на перекладывание 64 дисков со штыря 1 на штырь 3 (в режиме работы 24 часа в сутки, без сна и отдыха, без выходных и отпусков) потребуется почти 585 миллиардов лет! Точнее: 584 942 417 355 лет. Монахи всё ещё работают…
Дата добавления: 2015-07-26; просмотров: 366 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Рекурсия и опережающее описание | | | I. Введение |