1-11 класс
  • 1-11 класс
  • 1 класс
  • 2 класс
  • 3 класс
  • 4 класс
  • 5 класс
  • 6 класс
  • 7 класс
  • 8 класс
  • 9 класс
  • 10 класс
  • 11 класс
Выберите класс
Предметы
Семакин
Дополнительное задание 1 Параграф 24 ГДЗ Семакин 8 класс (Информатика)
Семакин, Залогова
8 класс
Класс
8
Предмет
Информатика
Автор
Семакин, Залогова

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

Задача

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).

2 уровень сложности

  1. Составить программу нахождения наименьшего общего кратного (НОК) двух чисел $$m$$ и $$n$$, используя формулу $$n \cdot m = \mathrm{НОД}(n,m)\cdot\mathrm{НОК}(n,m)$$. Разработать тесты для проверки правильности работы программы.
  2. Проверить, являются ли два числа $$a$$ и $$b$$ взаимно простыми. Два числа называются взаимно простыми, если их наибольший общий делитель равен 1. Протестировать программу для следующих исходных данных:
    а) $$a=5$$, $$b=95$$;
    б) $$a=3$$, $$b=100$$;
    в) $$a=11$$, $$b=98$$.
  3. Написать программу сокращения дроби, где $$N$$ — целое, $$M$$ — натуральное число. Использовать алгоритм Евклида. Разработать тесты для проверки правильности работы программы.

3 уровень сложности

  1. Составить на языке Паскаль программу нахождения наибольшего общего делителя трёх чисел, используя следующую формулу: $$\mathrm{НОД}(a,b,c)=\mathrm{НОД}(\mathrm{НОД}(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
  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.

Проверка для заданных данных:

  • $$40$$ и $$64$$: $$\gcd(40,64)=8$$
  • $$32$$ и $$16$$: $$\gcd(32,16)=16$$
  • $$12$$ и $$20$$: $$\gcd(12,20)=4$$
  • $$5$$ и $$12$$: $$\gcd(5,12)=1$$

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.

Тесты:

  • $$n=5$$, числа: $$1,\,-2,\,0,\,7,\,-3$$ → положительных $$2$$, отрицательных $$2$$, нулей $$1$$.
  • $$n=4$$, числа: $$0,\,0,\,5,\,-1$$ → положительных $$1$$, отрицательных $$1$$, нулей $$2$$.

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 уровень

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(‘НОК =’, p div d)
end.

Тесты:

  • $$10$$ и $$30$$: $$\gcd=10$$, $$\operatorname{lcm}=\dfrac{10\cdot 30}{10}=30$$
  • $$40$$ и $$16$$: $$\gcd=8$$, $$\operatorname{lcm}=\dfrac{40\cdot 16}{8}=80$$
  • $$15$$ и $$80$$: $$\gcd=5$$, $$\operatorname{lcm}=\dfrac{15\cdot 80}{5}=240$$

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.

Проверка:

  • $$5$$ и $$95$$: $$\gcd(5,95)=5$$, числа не взаимно простые.
  • $$3$$ и $$100$$: $$\gcd(3,100)=1$$, числа взаимно простые.
  • $$11$$ и $$98$$: $$\gcd(11,98)=1$$, числа взаимно простые.

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 div c, ‘/’, b div c)
end.

Тесты:

  • $$5/15$$ → $$\gcd(5,15)=5$$, получаем $$1/3$$
  • $$24/4$$ → $$\gcd(24,4)=4$$, получаем $$6/1$$
  • $$21/43$$ → $$\gcd(21,43)=1$$, дробь не сокращается

3 уровень

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;
  while d <> c do
    if d > c then d := d — c
    else c := c — d;
  writeln(‘НОД =’, d)
end.

Проверка:

  • $$40, 64, 120$$ → $$\gcd(40,64)=8$$, $$\gcd(8,120)=8$$
  • $$32, 45, 60$$ → $$\gcd(32,45)=1$$, $$\gcd(1,60)=1$$
  • $$11, 220, 33$$ → $$\gcd(11,220)=11$$, $$\gcd(11,33)=11$$
  • $$175, 1025, 600$$ → $$\gcd(175,1025)=25$$, $$\gcd(25,600)=25$$

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,\ 5,\ 6,\ -11,\ 24,\ -1,\ 0$$ получаем:

  • $$max=24$$
  • $$min=-11$$

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 i do
      if (i mod j = 0) then
        write(‘+’);
    writeln;
  end;
end.

Для $$N=4$$ вывод будет таким:

$$1+$$
$$2++$$
$$3++$$
$$4+++$$

Ответ

Приведены программы и тесты для всех заданий.

Иллюстрация к решению «Дополнительное задание 1 Параграф 24 ГДЗ Семакин 8 класс (Информатика)», 1
Иллюстрация к решению «Дополнительное задание 1 Параграф 24 ГДЗ Семакин 8 класс (Информатика)», 2
Иллюстрация к решению «Дополнительное задание 1 Параграф 24 ГДЗ Семакин 8 класс (Информатика)», 4



Общая оценка
4.3 / 5
Другие учебники
Другие предметы