Из предложенного одномерного массива размерностью 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.

Объяснение кода листинга программы

  1. В программе используется тип данных span, который представляет собой диапазон чисел от 1 до 20 (d).
  2. Создаются две переменные типа Mas_Type1 и Mas_Type2.
  3. Переменная M1 инициализируется значением Mas_Type1.
  4. Переменная M2 инициализируется значением Mas_Type2.
  5. Переменные i, j, item и column используются для формирования двумерного массива.
  6. В процедуре M1_Out происходит формирование двумерного массива.
  7. Если текущий индекс i нечетный, то значение x присваивается переменной Mas2[i] и записывается в переменную Mas1[2,j].
  8. Если текущий индекс i четный, то значение x присваивается переменной Mas2[i] и записывается в переменную Mas1[1,j]. Индекс j увеличивается на 1.
  9. Программа завершается, если количество элементов в массиве нечетное.
  10. В начале программы считывается количество элементов в массиве.
  11. Если количество элементов нечетное, программа завершается.
  12. Для каждого элемента в массиве генерируется случайное число от 0 до 19 и присваивается переменной M2[i].
  13. Выводится исходный массив S.
  14. Вызывается процедура M1_Out с аргументом M2 и переменной M1.
  15. Выводится новый массив S.
  16. Для каждой строки в новом массиве выводятся элементы.
  17. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы