Вы находитесь на странице: 1из 10

Цель и задачи работы

Изучение способов организации различных циклических алгоритмов.

Задание на работу
Проверить и проанализировать работу примеров программ.
Разработать две программы по своему варианту.

Выполнение работы
1) Проверка работы программ из примеров 1-10:
1. Просуммировать все целые числа от 1 до 100
var s,i: integer;
begin
s := 0; {Обнуление переменной}
for i:=1 to 100 do
s:=s+i; {Прибавление очередного элемента суммы}
writeln(s);
end.

Программа выдаёт один единственный ответ 5050, т.к. исходные


денные не меняются.

2. Вычисление факториала:
var n, p, k:integer;
begin
readln(n);
p:=1;
for k:=2 to n do
p:=p*k;
writeln(p);
end.
Значение Вычисленные Результаты работы
n значения программы
6 720 720
4 24 24
3 6 6

3. Вычислить значение выражения 1!+2!+3!+…+n!


var i, s, n, p:integer;
begin
s:=0;
p:=1;
readln(n);
for i:=1 to n do
begin
p:=p*i;
s:=s+p;
end;
writeln(s);
end.
Значение Вычисленные Результаты работы
n значения программы
2 3 3
3 9 9
4 33 33

4. Напечатать числа в виде таблицы


var k,i: integer;
begin
for k:=1 to 4 do
{4 раза делаем то, что написано между begin’ом и
end’ом}
begin
for i:=1 to 5 do
write(3, ' '); {Выводим одну строку}
writeln; {Переводим курсор на следующую строку}
end;
end.

Программа выдаёт единственный ответ, так как исходные значения


не меняются.
3 3 3 3 3
3 3 3 3 3
3 3 3 3 3
3 3 3 3 3

5. Напечатайте числа в виде таблицы


var n:integer;
begin
for n:=1 to 16 do
begin
write(n, ' ');
if n mod 4 = 0 then
writeln;
end;
end.

Программа выдаёт единственный ответ, так как исходные значения


не меняются.
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

6. Напечатайте числа в виде таблицы


var i, k: integer;
begin
for i:=1 to 4 do
begin
for k:=2*i-1 to (2*i-1)+4 do
write(k, ' ');
writeln;
end;
end.

Программа выдаёт единственный ответ, так как исходные значения


не меняются.
1 2 3 4 5
3 4 5 6 7
5 6 7 8 9
7 8 9 10 11

7. Поиск делителей целого числа N


var n, m, i:integer;
begin
readln(n);
writeln(1, ' ', n);
m:=trunc(sqrt(n));
for i:=2 to m do
if n mod i = 0 then
writeln(i, ' ', n div i);
end.

Значение Вычисленные Результаты работы


n значения программы
5 1, 5 1 5
10 1, 10, 2, 5 1 10
2 5
15 1, 15, 3, 5 1 15
3 5

8. Найти минимумы функции с точностью до 0.001 на


отрезке от –5 до 5.
var step, MinX, MaxX, x:real;
i, VarNumber: integer;
begin
Step:=0.001;
MinX:=-5;
MaxX:=5;
VarNumber:=trunc((MaxX - MinX)/Step)+1; {Вычисляем
количество перебираемых вариантов решения}
for i:=1 to VarNumber do
begin
x:=x + step; {Вычисляем вариант, соответствующий номеру
i}
if (sqr(sqr(x))-sqr(x)<sqr(sqr(x-step))-sqr(x-step))
and (sqr(sqr(x))-sqr(x) < sqr(sqr(x+step)))
then writeln(x);
end;
end.
Программа выдаёт единственный ответ, так как исходные значения
не меняются. 0.707

9. Пусть двумя числами (H и V) задано положение коня на шахматной


доске. Найдите координаты всех клеток, куда конь может пойти
следующим ходом (других фигур на доске нет).
var H, V, X, Y: integer;
begin
readln(H, V);
for X:=1 to 8 do
for Y:=1 to 8 do
if ((abs(X-H)=2)and(abs(Y-V) = 1)) or ((abs(Y-V) = 2)
and (abs(X-H) = 1))
then writeln(X, Y);
end.

Значение Вычисленные Результаты работы


H, V значения программы
1,1 23, 32 23
32
5,5 34, 36, 43, 47, 63, 67, 34
74, 76 36
43
47
63
67
74
76
8,2 61, 63, 74 61
63
74

10.Составить программу-генератор пифагоровых троек. Пифагоровой


тройкой называют такие целые числа a, b и c, которые
удовлетворяют условию a2+b2=c2. Известно, что существует
прямоугольный треугольник с такими длинами сторон. Найдем все
пифагоровы тройки для c < 5.
var MaxC, MaxAB, a, b, c:integer;
begin
MaxC:=25;
MaxAB:=trunc(sqrt(MaxC));
for a:=1 to MaxAB do
begin
for b:=1 to MaxAB do
begin
c:=round(sqrt(a*a+b*b));
if a*a+b*b = c*c then
begin
write(a, ' ', b, ' ', c);
writeln;
end;
end;
end;
end.

Программа выдаёт единственный ответ, так как исходные значения


не меняются.
3 4 5
4 3 5

2)
Задача №1

Выведите на экран числа в следующем виде:


  7 6 5 4 3 2
6 5 4 3 2
5 4 3 2
4 3 2
3 2
2
и т.д. (количество строк – N-1, вводимое с клавиатуры).

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


Для решения задачи нам необходимо два цикла, один для
обозначения столбцов, а другой строк. Во втором цикле используем
downto для того, чтобы каждое последующее число уменьшалось
на единицу.

2. Схема алгоритма:
var i, j, n: integer;
begin
writeln('Введите число N');
read(n);
for i := 1 to n - 1 do
begin
for j := n - i + 1 downto 2 do
write(j, ' ');
writeln;
end;
end.

3. Проверка результатов программы:

Значение Вычисленные Результаты работы


n значения программы
3 32 3 2
2 2
4 432 4 3 2
32 3 2
2
2
5 5432 5 4 3 2
432 4 3 2
3 2
32 2
2

Задача №2

Дано натуральное число N (N> 9). Определить количество нулей,


идущих подряд в младших (тех, которые справа) разрядах данного
числа. Пример. N=1020 000. Количество нулей равно четырем.

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

Для написания программы используем цикл с предусловием. В теле


цикла применяем inc(i) для того, чтобы увеличивать переменную i
на единицу. Так же используем операции mod и div, остаток от
деления и целочисленное деление соответственно.

2. Схема алгоритма:
var N,i:integer;
begin
write('N=');
readln(n);
while (n mod 10=0) do
begin
inc(i);
n:=n div 10;
end;
writeln('Количество нулей равно ', i);
end.

3.
Значение Вычисленные Результаты работы
n значения программы
10000 4 Количество нулей равно 4

1505560 1 Количество нулей равно 1

144000 3 Количество нулей равно 3


Ответы на контрольные вопросы

1) А) x:=45 Б) x:=20
2) A) 0
1 1 1
0 0 0
1 1 1 1 1
Б) -2 -1 0 1 2 -1 0 1 0 1 -1 0 1 2 0 1 2 1 0 1 2 3 1 2 2

3) Алгоритм нахождения максимального значения в


последовательности вводимы чисел:
Для начала программа запоминает первое введённое число, а затем
рассматривает второе. Если оно больше того числа, которое было
присвоено в начале, то запоминает новое число и переходит к
следующему, в противном случае просто переходит к следующему.

4) Алгоритм нахождения номера максимального элемента в


последовательности чисел:
В самом начале программа запоминает значение первого числа,
также вводится переменная, которая будет являться счётчиком, в
начале присваивается значение 1. Последующие действия схожи с
предыдущим пунктом.

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


Дано n > 1, для вычисления суммы мы используем цикл, который
будет работать от 1 до n. В теле цикла опишем нахождение члена
1
m=(−1 )n
последовательности через формулу: 2n .
Так же
используем переменную S, которая будет считать сумму.
6) Алгоритм для определения суммы n чисел, будет ли она меньше 20:
В начале сумму обозначаем за переменную s, присваеваем значение
0. Составляем цикл, количество повторений совпадает с
количеством вводимых чисел. В теле цикла к сумме прибавляем
новое введённое число. После цикла необходимо составить
оператор условия, который будет сравнивать значение суммы с 20,
необходимо вывести меньше значение или нет.

7) Алгоритм для определения простых чисел:


Вводим число, и после в цикле от 2 до квадрата данного числа без
дроби выполняем, если остаток от деления n на i равен 0, то число
простое

8) Задача №1
Начало
1. Ввести N
2. Для i от 1 до n-1 делать
3. Для j от n-i+1 до 2 делать
4. Вывести j
Конец

Задача №2
Начало
1. Ввести n
2. Пока n mod 10 равно 0 делать
3. i=i+1
4. n=n div 10
5. Вывод i
Конец