menu
person


ГДЗ Информатика 10 класс Семакин §26 Типовые задачи обработки массивов


1. Какими способами можно заполнить массив значениями?

Массив можно заполнить значениями разными способами:

Вручную, указывая каждое значение по индексу.
Используя циклы для автоматического заполнения элементов.
Генерируя значения случайным образом.

2. Как можно вычислять целые случайные числа в диапазоне от -50 до 0?

randomize; // Инициализация генератора случайных чисел
randomize;
randomize;
randomize; // Вызывать несколько раз для улучшения случайности

var
  randomNumber: integer;

randomNumber := random(51) - 50; // Генерация случайного числа от -50 до 0

3. Как можно вычислять вещественные случайные числа в диапазоне от 2,5 до 10?

randomize;

var
  randomValue: real;

randomValue := random * (7.5) + 2.5; // Генерация случайного числа от 2.5 до 10

4. Даны два вектора {xi}, {yi}, i = 1, . . ., 10, упорядоченные по возрастанию. Соедините их в один вектор {zi}, i = 1, . . ., 20 так, чтобы сохранилась упорядоченность.

var
  xi, yi, zi: array [1..10] of integer;
  i, j, k: integer;

// Заполнение xi и yi значениями
// ...

i := 1;
j := 1;
k := 1;

while (i <= 10) and (j <= 10) do
begin
  if xi[i] < yi[j] then
  begin
    zi[k] := xi[i];
    i := i + 1;
  end
  else
  begin
    zi[k] := yi[j];
    j := j + 1;
  end;
  k := k + 1;
end;

// Дополнительная обработка оставшихся элементов xi и yi, если есть
while i <= 10 do
begin
  zi[k] := xi[i];
  i := i + 1;
  k := k + 1;
end;

while j <= 10 do
begin
  zi[k] := yi[j];
  j := j + 1;
  k := k + 1;
end;

5. Дан массив, состоящий из 100 целых чисел. Выведите все числа, которые встречаются в этом массиве:

а) несколько раз;

var
  arr: array [1..100] of integer;
  i, j: integer;

// Заполнение массива arr значениями
// ...

for i := 1 to 100 do
begin
  for j := i + 1 to 100 do
  begin
    if (arr[i] = arr[j]) then
    begin
      writeln('Число ', arr[i], ' повторяется в массиве.');
      break;
    end;
  end;
end;

б) только по одному разу.

var
  arr: array [1..100] of integer;
  i, j: integer;

// Заполнение массива arr значениями
// ...

for i := 1 to 100 do
begin
  for j := 1 to 100 do
  begin
    if (i <> j) and (arr[i] = arr[j]) then
      break;
    if j = 100 then
      writeln('Число ', arr[i], ' встречается только один раз.');
  end;
end;

6. В целочисленной матрице размером 10 х 10 найдите максимальное значение и индексы всех элементов, равных ему.

var
  matrix: array [1..10, 1..10] of integer;
  maxVal: integer;
  maxIndexes: array [1..2] of integer;
  i, j: integer;

// Заполнение матрицы matrix значениями
// ...

maxVal := matrix[1, 1]; // Предположим, что первый элемент матрицы - начальное максимальное значение
maxIndexes[1] := 1;
maxIndexes[2] := 1;

for i := 1 to 10 do
begin
  for j := 1 to 10 do
  begin
    if matrix[i, j] > maxVal then
    begin
      maxVal := matrix[i, j];
      maxIndexes[1] := i;
      maxIndexes[2] := j;
    end;
  end;
end;

writeln('Максимальное значение: ', maxVal);
writeln('Индексы элемента: (', maxIndexes[1], ', ', maxIndexes[2], ')');

7. Матрицу размером 5 х 10 заполните случайными двоичными цифрами (0 и 1). Определите номер строки с наибольшим количеством нулей.

var
  matrix: array [1..5, 1..10] of integer;
  maxZeroCount, maxZeroCountRow, zeroCount: integer;
  i, j: integer;

// Заполнение матрицы matrix случайными двоичными цифрами (0 и 1)
// ...

maxZeroCount := 0;
maxZeroCountRow := 0;

for i := 1 to 5 do
begin
  zeroCount := 0;
  for j := 1 to 10 do
  begin
    if matrix[i, j] = 0 then
      zeroCount := zeroCount + 1;
  end;
  
  if zeroCount > maxZeroCount then
  begin
    maxZeroCount := zeroCount;
    maxZeroCountRow := i;
  end;
end;

writeln('Номер строки с наибольшим количеством нулей: ', maxZeroCountRow);

8. В двоичной матрице размером 10 х 10 (см. задание 7) найдите совпадающие строки.

var
  matrix: array [1..10, 1..10] of integer;
  matchingRows: array [1..10] of boolean;
  i, j, k: integer;

// Заполнение матрицы matrix случайными двоичными цифрами (0 и 1)
// ...

for i := 1 to 10 do
  matchingRows[i] := false;

for i := 1 to 9 do
begin
  if matchingRows[i] then
    continue; // Если строка уже считалась совпадающей, пропустить

  for j := i + 1 to 10 do
  begin
    if matchingRows[j] then
      continue; // Если строка уже считалась совпадающей, пропустить

    for k := 1 to 10 do
    begin
      if matrix[i, k] <> matrix[j, k] then
        break; // Если хотя бы один элемент не совпадает, прервать сравнение
      if k = 10 then
      begin
        matchingRows[i] := true;
        matchingRows[j] := true;
        writeln('Строки ', i, ' и ', j, ' совпадают.');
      end;
    end;
  end;
end;


Вы просматриваете решебник ГДЗ Информатика 10 класс Семакин параграф 26

Сообщить о неточной информации или отсутствии ответов
Проверочный код, год рождения Д.И.Менделеева:
В каком задании/вопросе ошибка:
Как должно быть: