Составление и реализация алгоритмов с повторением

Пример 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

Написать программу, подсчитывающую количество четных и нечетных цифр в числе.

Алгоритм решения задачи:

  1. Если число делится без остатка на 2, значит последняя цифра четная (увеличиваем количество четных цифр). Иначе - нечетная (тогда количество нечетных цифр + 1).

  2. Избавляемся от младшего разряда в числе: операция div на 10.

Сохраните программу в файл по шаблону 8Б_ФИ_Prog_2_3.pas

Задание 4

Измените программу, полученную при выполнении задания 3 так, чтобы получилось решение задачи:

Вводится натуральное число. Найти сумму четных цифр, входящих в его состав.

Алгоритм решения задачи:

  1. Присвоить переменной sum значение 0.

  2. Пока значение n больше нуля выполнять пункты 4 и 5.

  3. Извлекать последнюю цифру числа (путем нахождения остатка от деления на 10) и проверять ее на четность (путем нахождения остатка от деления на 2).

  4. Если цифра четная, то добавлять ее к sum.

  5. Избавиться от последней цифры числа путем ее деления нацело на 10.

  6. Вывести значение 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.

Алгоритм решения задачи:

Проверять число на простоту можно по следующему алгоритму:

  1. Если число делится на любой делитель от 2 до половины от себя, то оно не простое.

  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