Из предложенного одномерного массива размерностью 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
. - Для каждой строки в новом массиве выводятся элементы.
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д