Составление и реализация алгоритмов с повторением
Пример 1
Составить программу, которая вычисляет произведение n первых натуральных чисел (факториал числа - n!) и выводит на экран результат.
program proizv_n;
uses crt;
var i, n, p: integer;
begin
write ('n = '); readln(n);
{n - количество первых натуральных чисел}
p:=1; {Начальное значение p равно 1}
for i:=2 to n do p:=p*i; {В переменной p накапливается произведение}
writeln('p = ',p);
end.
Пример 2
Составить программу, которая запрашивает целое число а < 5, находит наименьшее натуральное число n, при котором aN > 50, и результат — наименьшее число n — выводит на экран.
program poisk_n;
Uses crt;
var a, n, St: integer;
begin
write ('Основание a = '); readln(a);
n:=0; St:=1; {n — показатель степени, в переменной St накапливается степень числа а}
while St<50 do begin
n:=n+1; St:=St*a; {Увеличение степени n, пока St < 50}
end;
writeln ('Наименьшее n = ',n);
{Результат — последнее значение n}
end.
Задания
Задание 1
Исправьте текст программы 1, написанной ниже, так чтобы она выводила на экран таблицу значений функции у = х + 1, вычисленных в каждой точке х на отрезке [-2, 2] с шагом 0,5.
Программа 1
programtabulir;usescrt;varx,y:real;beginwriteln('---------');writeln('x y');writeln('---------');x:=-2;whilex<=2dobeginy:=x+1;writeln(x:4:1,y:5:1);x:=x+0.5;endend.
Сохраните программу в файл по шаблону 8Б_ФИ_Prog_2_1.pas
Измените полученную программу так, чтобы получить решение задачи:
Составить таблицу значений функции y = 5 - x2/2 на отрезке [-5; 5] с шагом 0.5.
Сохраните программу.
Задание 2
Составить программу, с помощью которой компьютер «задумает» число от 0 до 10, предложит Вам его угадать и определит, за сколько попыток Вы это сделали.
program igra;
uses crt;
var x, a, n: integer;
begin
x:=random(11) ; {Случайное число от 0 до 10 помешается в переменную}
writeln ('Задумано целое число от 0 до 10. Угадайте его!');
write('Введите предполагаемое число: ');
read(a);
n:=1; {Сделана первая попытка}
while a<>x do begin
n:=n+1;
writeln('He угадали!'); {Следующая попытка }
if a<x then writeln('Ваше число меньше задуманного!')
else writeln('Ваше число больше задуманного!');
writeln('Попытайтесь еше раз!');
readln(a) ;
end;
writeln('Поздравляю! Число угадано за ',n, ' попыток');
end.
Измените представленную программу так, чтобы получилось решение задачи:
Программа «задумывает» случайное число в диапазоне от 0 до 99. После каждой попытки играющего угадать число программа выводит на экран одно из сообщений: «Ваше число больше задуманного!», «Ваше число меньше задуманного!» или «Поздравляю! Число угадано за ',n, ' попыток». На отгадывание числа дается 7 попыток. Программа завершается при выполнении одного из условий: дан правильный ответ либо все попытки исчерпаны.
Сохраните программу в файл по шаблону 8Б_ФИ_Prog_2_2.pas
2
Задание 3
Написать программу, подсчитывающую количество четных и нечетных цифр в числе.
Алгоритм решения задачи:
Если число делится без остатка на 2, значит последняя цифра четная (увеличиваем количество четных цифр). Иначе - нечетная (тогда количество нечетных цифр + 1).
Избавляемся от младшего разряда в числе: операция div на 10.
Сохраните программу в файл по шаблону 8Б_ФИ_Prog_2_3.pas
Задание 4
Измените программу, полученную при выполнении задания 3 так, чтобы получилось решение задачи:
Вводится натуральное число. Найти сумму четных цифр, входящих в его состав.
Алгоритм решения задачи:
Присвоить переменной sum значение 0.
Пока значение n больше нуля выполнять пункты 4 и 5.
Извлекать последнюю цифру числа (путем нахождения остатка от деления на 10) и проверять ее на четность (путем нахождения остатка от деления на 2).
Если цифра четная, то добавлять ее к sum.
Избавиться от последней цифры числа путем ее деления нацело на 10.
Вывести значение sum на экран.
Сохраните программу в файл по шаблону 8Б_ФИ_Prog_2_4.pas
3
Задание 5
Напишите программу для решения задач For33 из встроенного задачника.
Дано целое число N (> 1). Последовательность чисел Фибоначчи FK (целого типа) определяется следующим образом: F1 = 1, F2 = 1, FK = FK−2 + FK−1, K = 3, 4, … . Вывести элементы F1, F2, …, FN.
Алгоритм решения задачи:
1. Получить значение n.
2. Присвоить a и b значения 0 и 1 соответственно (это первые числа ряда Фибоначчи). Вывести их на экран.
3. Начиная с 3-го элемента по n,
a. выводить на экран сумму a и b,
b. сохранить значение переменной b в c,
c. записать в b сумму a и b,
d. присвоить a значение с.
Сохраните программу в файл по шаблону 8Б_ФИ_Prog_2_5.pas
Задание 6
Дано целое число N (> 1). Последовательность чисел Фибоначчи FK определяется следующим образом:
F1 = 1, F2 = 1, FK = FK−2 + FK−1, K = 3, 4, …
Проверить, является ли число N числом Фибоначчи. Если является, то вывести true, если нет — вывести false.
Сохраните программу в файл по шаблону 8Б_ФИ_Prog_2_6.pas
Задание 7
Напишите программу для решения задач While22 из встроенного задачника.
Дано целое число N (> 1). Если оно является простым, т. е. не имеет положительных делителей, кроме 1 и самого себя, то вывести true, иначе вывести false.
Алгоритм решения задачи:
Проверять число на простоту можно по следующему алгоритму:
Если число делится на любой делитель от 2 до половины от себя, то оно не простое.
Если число так и не разделилось ни на один из перебранных делителей, то оно простое.
Сохраните программу в файл по шаблону 8Б_ФИ_Prog_2_7.pas
Задание 8
Напишите программу для решения задачи:
Даны целые положительные числа A и B. Найти их наибольший общий делитель (НОД), используя алгоритм Евклида:
НОД(A, B) = НОД(B, A mod B), если B ≠ 0; НОД(A, 0) = A,
где «mod» обозначает операцию взятия остатка от деления.
Сохраните программу в файл по шаблону 8Б_ФИ_Prog_2_8.pas