Дополнительное задание 1 Параграф 24 ГДЗ Семакин 8 класс (Информатика)

Решение #1

Изображение ЕК ЦОР: Часть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('Введи M и N>>');
readln(M, N);
while M <> N do
if M > N then M := M - N
else N := N - M;
writeln('НОД=', M)
end.
2.
program task_2;
var
i, a, k1, k2, k0, n: integer;
begin
k1 := 0; k2 := 0;k0 := 0;
write('Введи количество чисел');
readln(n);
for i := 1 to n do
begin
write('Введи число:');
readln(a);
if a > 0 then k1 := k1 + 1
else if a < 0 then k2 := k2 + 1
else k0 := k0 + 1
end;
writeln('Положительных >>', k1, ' Отрицательных >>', k2, ' Количество нулей >> ', 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, ' ')
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('Введи M, N >>');
readln(m, n);
p := m * n;
while m <> n do //определение НОД
if m > n then m := m - n
else n := n - m;
d := m;//НОД
writeln('НОK =', p div d)
end.
1) 10, 30
2) 40, 16
3) 15, 80
2.
program task_2;
var
a, b: integer;
begin
write('Введи a и b>>');
readln(a, b);
while a <> b do
if a > b then a := a - b
else b := b - a;
if a = 1 then writeln('Числа взаимно простые')
else writeln('Числа не взаимно простые');
end.
3.
program task_3;
var
M, N, a, b, c: integer;
begin
write('Введи M и N>>');
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('Сокращенная дробь >', a / c, '/', 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('Введи a, b, c>>');
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('НОД =', d)//НОД a, b, c
end.
2.
program task_2;
var
a, max, min: integer;
begin
write('Введи число>>');
readln(a);
max := a; min := a;
while a <> 0 do
begin
if a > max then max := a;
if a < min then min := a;
write('Введи число>>');
readln(a);
end;
writeln('max=', max, ' min=', min)
end.
3.
program task_3;
var
n, j, i: integer;
begin
writeln('введите число');
readln(n);
for i := 1 to n do
begin
write(i);
for j := 1 to n do
if (i mod j = 0) then
write('+');
writeln;
end;
end.
*Цитирирование задания со ссылкой на учебник производится исключительно в учебных целях для лучшего понимания разбора решения задания.
*размещая тексты в комментариях ниже, вы автоматически соглашаетесь с пользовательским соглашением