Дополнительное задание 1 Параграф 24 ГДЗ Семакин 8 класс (Информатика)
ЕК ЦОР: Часть2, глава 6, § 40. ЦОР № 8 Практическое задание №25 Тема: Программирование циклов и ветвлений на Паскале. Алгоритм Евклида 1 уровень сложности 1.





Ниже вариант решения задания из учебника Семакин, Залогова 8 класс, Просвещение:
ЕК ЦОР: Часть2, глава 6, § 40. ЦОР № 8
Практическое задание №25
Тема: Программирование циклов и ветвлений на Паскале.
Алгоритм Евклида
1 уровень сложности
1. Набрать и отладить программу нахождения наибольшего общего делителя и протестировать её на следующих исходных данных:
а) a=40 b=64
б) a=32 b=16
в) a=12 b=20
г) a=5 b=12
2. Составить на языке Паскаль программу, которая запрашивает с клавиатуры N целых чисел и считает, сколько из них положительных, сколько отрицательных и сколько нулей. Разработать для программы не менее двух тестов и доказать правильность её работы.
3. Написать программу, которая выводит на экран все двухзначные числа, делящиеся на 3 или на 5 (использовать операции целочисленного деления div или mod).
1.
program task_1;
var
M, N: integer;
begin
write(taskВведи M и N > > task);
readln(M, N);
while M N do
if M > N then M := M - N
else N := N - M;
writeln(taskНОД=task, M)
end.
2.
program task_2;
var
i, a, k1, k2, k0, n: integer;
begin
k1 := 0; k2 := 0;k0 := 0;
write(taskВведи количество чиселtask);
readln(n);
for i := 1 to n do
begin
write(taskВведи число:task);
readln(a);
if a > 0 then k1 := k1 + 1
else if a
else k0 := k0 + 1
end;
writeln(taskПоложительных > > task, k1, task Отрицательных > > task, k2, task Количество нулей > > task, k0)
end.
3.
program task_3;
var
i: integer;
begin
for i := 10 to 99 do
if (i mod 3 = 0) or (i mod 5 = 0) then write(i, task task)
end.
2 уровень сложности
1. Составить программу нахождения наименьшего общего кратного (НОК) двух чисел m и n, используя формулу n*m=НОД(n,m)*НОК(n,m). Разработать тесты для проверки правильности работы программы.
2. Проверить, являются ли два числа a и b взаимно простыми. Два числа называются взаимно простыми, если их наибольший общий делитель равен 1. Протестировать программу для следующих исходных данных:
а) a=5 b=95
б) a=3 b=100
в) a=11 b=98
3. Написать программу сокращения дроби , где N – целое, M – натуральное число. Использовать алгоритм Евклида. Разработать тесты для проверки правильности работы программы.
1.
program task_1;
var
m, n, p, d: integer;
begin
write(taskВведи M, N > > task);
readln(m, n);
p := m * n;
while m n do //определение НОД
if m > n then m := m - n
else n := n - m;
d := m;//НОД
writeln(taskНОK =task, p div d)
end.
1) 10, 30
2) 40, 16
3) 15, 80
2.
program task_2;
var
a, b: integer;
begin
write(taskВведи a и b > > task);
readln(a, b);
while a b do
if a > b then a := a - b
else b := b - a;
if a = 1 then writeln(taskЧисла взаимно простыеtask)
else writeln(taskЧисла не взаимно простыеtask);
end.
3.
program task_3;
var
M, N, a, b, c: integer;
begin
write(taskВведи M и N > > task);
readln(M, N);
a := M; b := N;
while M N do
if M > N then M := M - N
else N := N - M;
c := M;
writeln(taskСокращенная дробь > task, a / c, task/task, b / c)
end.
1) 5 15
2) 24 4
3) 21 43
3 уровень сложности
1. Составить на языке Паскаль программу нахождения наибольшего общего делителя трёх чисел, используя следующую формулу: НОД(a,b,c)=НОД(НОД(a,b),c). Протестировать программу на следующих исходных данных:
а) a=40 b=64 c=120
б) a=32 b=45 c=60
в) a=11 b=220 c=33
г) a=175 b=1025 c=600
2. Написать программу, запрашивающую с клавиатуры целые числа и определяющую максимальное и минимальное из них. Окончание ввода – число 0. Протестировать программу для последовательности: -3 5 6 -11 24 -1 0.
3. Составить программу для графического изображения делимости чисел от 1 до N (N – исходное данное). В каждой строке надо выводить число и столько плюсов, сколько делителей у этого числа. Например, если исходное данное число равно 4, то на экране должно быть выведено:
1+
2++
3++
4+++
1.
program task_1;
var
a, b, c, d: integer;
begin
write(taskВведи a, b, c > > task);
readln(a, b, c);
while a b do
if a > b then a := a - b
else b := b - a;
d := a;//НОД a, b
while d c do
if d > c then d := d - c
else c := c - d;
writeln(taskНОД =task, d)//НОД a, b, c
end.
2.
program task_2;
var
a, max, min: integer;
begin
write(taskВведи число > > task);
readln(a);
max := a; min := a;
while a 0 do
begin
if a > max then max := a;
if a
write(taskВведи число > > task);
readln(a);
end;
writeln(taskmax=task, max, task min=task, min)
end.
3.
program task_3;
var
n, j, i: integer;
begin
writeln(taskвведите числоtask);
readln(n);
for i := 1 to n do
begin
write(i);
for j := 1 to n do
if (i mod j = 0) then
write(task+task);
writeln;
end;
end.
