Из предложенного одномерного массива размерностью S сформируйте двумерный массив - Pascal ABC
Формулировка задачи:
Всем привет) Помогите пожалуйста решить задачку, не могу придумать алгоритм, хоть об стенку бейся, уже голова болит( Из предложенного одномерного массива размерностью S сформируйте двумерный массив так, чтобы первая строка новой таблицы содержала четные по номеру элементы исходного массива, а вторая – нечетные. Предусмотрите случай нечетности S. Вроде легкая задача, но нервы сумела потрепать( Спасибо заранее)
Решение задачи: «Из предложенного одномерного массива размерностью S сформируйте двумерный массив»
textual
Листинг программы
Program Matrix;
uses Crt;
const d = 20;
row = 2;
type span = 1..d;
Mas_Type1 = array [span, span] of integer;
Mas_Type2 = array [span] of integer;
var M1 : Mas_Type1;
M2 : Mas_Type2;
i, j, item, column : span;
//Процедура формирования двумерного массива
Procedure M1_Out(Mas2:Mas_Type2; var Mas1:Mas_Type1);
var x : integer;
begin
j:=1;
for i:=1 to item do
begin
if Odd(i)then
begin
x:= Mas2[i];
Mas1[2,j]:=x
end
else
begin
x:= Mas2[i];
Mas1[1,j]:=x;
Inc(j)
end
end;
end;
BEGIN
ClrScr;
Randomize;
Write('Количество элементов массива = ');
ReadLn(item);
if Odd(item) then
begin
WriteLn('Элемент нечетный. Конец программы.');
exit;
end
else
for i:= 1 to item do
M2[i]:= Random(20);
WriteLn;
WriteLn('Исходный массив S:');
for i:=1 to item do
Write(M2[i], ' ');
WriteLn;
WriteLn;
M1_Out(M2, M1);
WriteLn('Новый массив S:');
column:= item div 2;
for i:=1 to row do
begin
for j:=1 to column do
Write(M1[i,j]:3);
WriteLn
end
END.
Объяснение кода листинга программы
- В программе используется тип данных
span, который представляет собой диапазон чисел от 1 до 20 (d). - Создаются две переменные типа
Mas_Type1иMas_Type2. - Переменная
M1инициализируется значениемMas_Type1. - Переменная
M2инициализируется значениемMas_Type2. - Переменные
i,j,itemиcolumnиспользуются для формирования двумерного массива. - В процедуре
M1_Outпроисходит формирование двумерного массива. - Если текущий индекс
iнечетный, то значениеxприсваивается переменнойMas2[i]и записывается в переменнуюMas1[2,j]. - Если текущий индекс
iчетный, то значениеxприсваивается переменнойMas2[i]и записывается в переменнуюMas1[1,j]. Индексjувеличивается на 1. - Программа завершается, если количество элементов в массиве нечетное.
- В начале программы считывается количество элементов в массиве.
- Если количество элементов нечетное, программа завершается.
- Для каждого элемента в массиве генерируется случайное число от 0 до 19 и присваивается переменной
M2[i]. - Выводится исходный массив
S. - Вызывается процедура
M1_Outс аргументомM2и переменнойM1. - Выводится новый массив
S. - Для каждой строки в новом массиве выводятся элементы.
- Программа завершается.