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;
б) только по одному разу.
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;
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;