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

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

Задача

Практическое задание №30
Тема: Поиск наибольшего и наименьшего элемента в массиве
1 уровень сложности
1. Написать программу, которая запрашивает массив размерности N и выводит на экран сам массив, а также наибольший и наименьший элементы массива. Протестировать программу на массивах размерностью 5 и 10 элементов.
2. Написать программу, которая запрашивает массив из N элементов, а затем делит все элементы массива на минимальный элемент. Протестировать программу на массивах размерностью 5 и 10 элементов.
3. Написать программу, которая запрашивает массив из N элементов и увеличивает все элементы массива на максимальный элемент. Протестировать программу на массивах размерностью 8 и 10 элементов.
1.
program mas_1;
const
n = 10;
var
a: array[1..n] of integer;
max, min, i: integer;
begin
writeln(‘Ввод массива’);
randomize;
for i := 1 to n do
begin
a[i] := random(20) + 5;
write(a[i], ‘ ‘)
end;
writeln;
min := a[1]; max := a[i];
for i := 2 to n do
begin
if max < a[i] then max := a[i]; if min > a[i] then
min := a[i];
end;
writeln(‘Максимальны элемент = ‘, max, ‘, минимальный элемент = ‘, min)
end.
2.
program mas_2;
const
n = 10;
var
a: array[1..n] of real;
min: real;
i: integer;
begin
writeln(‘Ввод массива’);
randomize;
for i := 1 to n do
begin
a[i] := random * 20;
write(a[i]:4:2, ‘ ‘)
end;
writeln;
min := a[1];
for i := 2 to n do
if min > a[i] then
min := a[i];
writeln(‘Вывод обработанного массива’);
for i := 1 to n do
begin
a[i] := a[i] / min;
write(a[i]:4:2, ‘ ‘)
end;
end.
3.
program mas_3;
const
n = 10;
var
a: array[1..n] of integer;
max,i: integer;
begin
writeln(‘Ввод массива’);
for i := 1 to n do
read(a[i]);
max := a[1];
for i := 2 to n do
if max < a[i] then max := a[i]; writeln('Вывод обработанного массива'); for i := 1 to n do begin a[i] := a[i]*max; write(a[i]:4, ' ') end; end. 2 уровень сложности 1. Написать программу, которая вводит массив из N вещественных чисел, а затем меняет местами наибольший и наименьший элементы массива. Протестировать программу на трёх произвольных тестах. 2. Дан одномерный массив A[N] (N=2k). Найти max(a2,a4,….a2k)+min(a1,a3,…a2k-1). Разработать для программы проверочные тесты и доказать правильность её работы. 3. Дан одномерный массив A[N]. Удвоить минимальный элемент массива и уменьшить в два раза максимальный элемент массива. Протестировать программу на следующих исходных данных: а) 3 5 7 2 1 9 -3 б) -4 7 8 2 3 7 2 3 5 1. program mas_1; const n = 10; var a: array[1..n] of real; max, min: real; i, imax, imin: integer; begin writeln('Ввод массива'); randomize; for i := 1 to n do begin a[i] := random * 20; write(a[i]:4:2, ' ') end; max := a[1]; imax := 1; min := a[1]; imin := 1; for i := 2 to n do begin if max < a[i] then begin max := a[i]; imax := i end; if min > a[i] then
begin
min := a[i]; imin := i
end;
end;
a[imin] := max; a[imax] := min;//обмен значений
writeln(‘Вывод обработанного массива’);
for i := 1 to n do
write(a[i]:4:2, ‘ ‘)
end.
2.
program mas_1;
const
k = 5;
var
a: array[1..k * 2] of integer;
max, min, i: integer;
begin
writeln(‘Ввод массива’);
randomize;
for i := 1 to k * 2 do
begin
a[i] := random(20) + 5;
write(a[i]:4, ‘ ‘)
end;
max := a[2]; min := a[1];
i := 4;
while i < = 2 * k do begin if max < a[i] then max := a[i]; if min > a[i — 1] then min := a[i — 1];
i := i + 2
end;
writeln;
writeln(‘max=’, max, ‘ min=’, min);
writeln(‘Сумма = ‘, max + min)
end.
3.
program mas_3;
const
n = 9;
var
a: array[1..n] of integer;
max, min, i: integer;
begin
writeln(‘Ввод элементов массива’);
for i := 1 to n do
read(a[i]);
max := a[1]; min := a[1];
for i := 2 to n do
begin
if max < a[i] then max := a[i]; if min > a[i] then min := a[i];
end;
writeln;
writeln(‘max/2=’, max / 2:4:2, ‘ min*2=’, min * 2);
end.
3 уровень сложности
1. Дан массив действительных чисел A[N].
Найти max(a1+a2n, a2+a2n-1,…,an+an+1). Протестировать программу на массивах размерностью 9 и 12 элементов.
2. Дан массив действительных чисел B[N]. Требуется умножить все его элементы на квадрат минимального элемента, если ak 0 и на квадрат максимального элемента, если ak < 0 (1 k N). Пример Массив: 2 3 5 -4 -2 4 5 (5 – максимальный элемент, -2 – минимальный) Результат: 8 12 20 -100 -50 16 20 Протестировать программу на приведённом выше примере и на двух других произвольных тестах. 3. Дана последовательность из N различных чисел. Найти сумму её членов, расположенных между максимальным и минимальным элементами (в сумму включить и оба эти числа). 1. В задании ошибка с индексами элементов. Скорей всего, предполагается найти максимальную сумму двух рядом стоящих элементов. program max_1; const n = 12; var a: array [1..n] of real; i: integer; max: real; begin randomize; for i := 1 to n do begin a[i] := random * 10; write(a[i]:4:2, ' ') end; max := a[1] + a[2]; for i := 2 to n - 1 do if max < a[i] + a[i + 1] then max := a[i] + a[i + 1]; writeln; writeln('', max:4:2); end. 2. Для получения приведенного в задании результата в исходном массиве не должно быть -4, т.к. минимальный элемент -2. Вводите массив: 2 3 5 4 -2 4 5, и получите приведенный результат. program max_2; const n = 7; var a: array [1..n] of real; i: integer; max, min: real; begin writeln('ввод массива'); for i := 1 to n do read(a[i]); max := a[1]; min := a[1]; for i := 2 to n do begin if max < a[i] then max := a[i]; if min > a[i] then
min := a[i]
end;
writeln(‘max=’, max:4:2, ‘ min=’, min:4:2);
for i := 1 to n do
begin
if a[i] > = 0 then
a[i] := a[i] * sqr(min)
else
a[i] := a[i] * sqr(max);
write(a[i]:4:2, ‘ ‘);
end;
end.
3.
program max_3;
const
n = 10;
var
a: array [1..n] of integer;
i, max, min, imax, imin, s, c, b: integer;
begin
writeln(‘ввод массива’);
for i := 1 to n do
read(a[i]);
max := a[1]; min := a[1];
imax := 1; imin := 1;
for i := 2 to n do
begin
if max < a[i] then begin max := a[i]; imax := i end; if min > a[i] then
begin
min := a[i]; imin := i
end;
end;
writeln;
writeln(‘max=’, max, ‘ min=’, min);
if imax > imin then
begin
c := imin; b := imax
end
else
begin
c := imax; b := imin
end;
s:=0;
for i := c to b do
s := s + a[i];
writeln(‘s=’, s);
end.
ЕК ЦОР: Часть 2, заключение, §6.1, ЦОР №7
Программа-конструктор алгоритмов.

Подробный ответ

Для каждого пункта составим программу на Pascal. Сначала находим нужный элемент массива: минимальный, максимальный или оба сразу, а затем выполняем требуемое преобразование.

1. Выводим массив, затем находим его наибольший и наименьший элементы.

program mas_1;
const
  n = 10;
var
  a: array[1..n] of integer;
  max, min, i: integer;
begin
  writeln(‘Ввод массива’);
  randomize;
  for i := 1 to n do
  begin
    a[i] := random(20) + 5;
    write(a[i], ‘ ‘)
  end;
  writeln;
  min := a[1];
  max := a[1];
  for i := 2 to n do
  begin
    if max < a[i] then
      max := a[i];
    if min > a[i] then
      min := a[i]
  end;
  writeln(‘Максимальный элемент = ‘, max, ‘, минимальный элемент = ‘, min)
end.

2. Находим минимальный элемент и делим на него все элементы массива.

program mas_2;
const
  n = 10;
var
  a: array[1..n] of real;
  min: real;
  i: integer;
begin
  writeln(‘Ввод массива’);
  randomize;
  for i := 1 to n do
  begin
    a[i] := random * 20;
    write(a[i]:4:2, ‘ ‘)
  end;
  writeln;
  min := a[1];
  for i := 2 to n do
    if min > a[i] then
      min := a[i];
  writeln(‘Вывод обработанного массива’);
  for i := 1 to n do
  begin
    a[i] := a[i] / min;
    write(a[i]:4:2, ‘ ‘)
  end
end.

3. Находим максимальный элемент и прибавляем его ко всем элементам массива.

program mas_3;
const
  n = 10;
var
  a: array[1..n] of integer;
  max, i: integer;
begin
  writeln(‘Ввод массива’);
  for i := 1 to n do
    read(a[i]);
  max := a[1];
  for i := 2 to n do
    if max < a[i] then
      max := a[i];
  writeln(‘Вывод обработанного массива’);
  for i := 1 to n do
  begin
    a[i] := a[i] + max;
    write(a[i]:4, ‘ ‘)
  end
end.

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

1. Меняем местами наибольший и наименьший элементы массива.

program mas_1;
const
  n = 10;
var
  a: array[1..n] of real;
  max, min: real;
  i, imax, imin: integer;
begin
  writeln(‘Ввод массива’);
  randomize;
  for i := 1 to n do
  begin
    a[i] := random * 20;
    write(a[i]:4:2, ‘ ‘)
  end;
  max := a[1]; imax := 1;
  min := a[1]; imin := 1;
  for i := 2 to n do
  begin
    if max < a[i] then
    begin
      max := a[i]; imax := i
    end;
    if min > a[i] then
    begin
      min := a[i]; imin := i
    end
  end;
  a[imin] := max;
  a[imax] := min;
  writeln(‘Вывод обработанного массива’);
  for i := 1 to n do
    write(a[i]:4:2, ‘ ‘)
end.

2. Для массива $$A[N]$$, где $$N=2k$$, находим $$\max(a_2,a_4,\dots,a_{2k})+\min(a_1,a_3,\dots,a_{2k-1})$$.

program mas_2;
const
  k = 5;
var
  a: array[1..k * 2] of integer;
  max, min, i: integer;
begin
  writeln(‘Ввод массива’);
  randomize;
  for i := 1 to k * 2 do
  begin
    a[i] := random(20) + 5;
    write(a[i]:4, ‘ ‘)
  end;
  max := a[2];
  min := a[1];
  i := 4;
  while i <= 2 * k do
  begin
    if max < a[i] then max := a[i];
    if min > a[i — 1] then min := a[i — 1];
    i := i + 2
  end;
  writeln;
  writeln(‘max=’, max, ‘ min=’, min);
  writeln(‘Сумма = ‘, max + min)
end.

3. Удваиваем минимальный элемент и уменьшаем в два раза максимальный элемент.

program mas_3;
const
  n = 9;
var
  a: array[1..n] of integer;
  max, min, i: integer;
begin
  writeln(‘Ввод элементов массива’);
  for i := 1 to n do
    read(a[i]);
  max := a[1];
  min := a[1];
  for i := 2 to n do
  begin
    if max < a[i] then max := a[i];
    if min > a[i] then min := a[i]
  end;
  writeln;
  writeln(‘max/2=’, max / 2:4:2, ‘ min*2=’, min * 2)
end.

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

1. В условии есть ошибка с индексами. Скорее всего, требуется найти максимальную сумму двух рядом стоящих элементов.

program max_1;
const
  n = 12;
var
  a: array[1..n] of real;
  i: integer;
  max: real;
begin
  randomize;
  for i := 1 to n do
  begin
    a[i] := random * 10;
    write(a[i]:4:2, ‘ ‘)
  end;
  max := a[1] + a[2];
  for i := 2 to n — 1 do
    if max < a[i] + a[i + 1] then
      max := a[i] + a[i + 1];
  writeln;
  writeln(max:4:2)
end.

2. Для примера из задания исходный массив должен быть таким: $$2, 3, 5, 4, -2, 4, 5$$. Тогда $$\min=-2$$, $$\max=5$$.

program max_2;
const
  n = 7;
var
  a: array[1..n] of real;
  i: integer;
  max, min: real;
begin
  writeln(‘ввод массива’);
  for i := 1 to n do
    read(a[i]);
  max := a[1];
  min := a[1];
  for i := 2 to n do
  begin
    if max < a[i] then
      max := a[i];
    if min > a[i] then
      min := a[i]
  end;
  writeln(‘max=’, max:4:2, ‘ min=’, min:4:2);
  for i := 1 to n do
  begin
    if a[i] >= 0 then
      a[i] := a[i] * sqr(min)
    else
      a[i] := a[i] * sqr(max);
    write(a[i]:4:2, ‘ ‘)
  end
end.

3. Находим индексы максимального и минимального элементов, затем суммируем элементы между ними, включая оба конца.

program max_3;
const
  n = 10;
var
  a: array[1..n] of integer;
  i, max, min, imax, imin, s, c, b: integer;
begin
  writeln(‘ввод массива’);
  for i := 1 to n do
    read(a[i]);
  max := a[1]; min := a[1];
  imax := 1; imin := 1;
  for i := 2 to n do
  begin
    if max < a[i] then
    begin
      max := a[i]; imax := i
    end;
    if min > a[i] then
    begin
      min := a[i]; imin := i
    end
  end;
  writeln;
  writeln(‘max=’, max, ‘ min=’, min);
  if imax > imin then
  begin
    c := imin; b := imax
  end
  else
  begin
    c := imax; b := imin
  end;
  s := 0;
  for i := c to b do
    s := s + a[i];
  writeln(‘s=’, s)
end.

Ответ

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



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