Помощь - Поиск - Пользователи - Календарь
Полная версия: Массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
vadim(b)

Const
  size_col = 9;  { число столбцов }
  size_row = 3; { число строк }
Type
  TColumn = Array[1 .. size_row] Of Integer;
  TMatrix = Array[1 .. size_col] Of TColumn;
Var
  k: Integer;

  Procedure swap_cols(Var mx: TMatrix; n: integer);
  Var
    i, j: Integer;
    T: TColumn;
  Begin

    For i := 1 To n Do
      For j := n DownTo i+1 Do
        If mx[Pred(j)][k] > mx[j][k] Then Begin
          T := mx[Pred(j)]; mx[Pred(j)] := mx[j]; mx[j] := T
        End
  End;
   procedure print(var mx: tmatrix);
 var i, j: integer;
 begin
   for i := 1 to size_row do
     begin
       for j := 1 to size_col do
         write(mx[j][i]:4); { <<< Обратите внимание на индексы !!! }
       writeln
     end;
 end;

var
 mx: tmatrix;
 i, j: integer;

begin
randomize;
 { Заполнение матрицы }
 for i := 1 to size_row do
   for j := 1 to size_col do
     mx[i][j] := random(10)+2;

 { Матрица до обмена }
 writeln('before:'); print(mx);
          readln(k);
 { Обмен столбцов }
 swap_cols(mx,size_col);

 { Матрица после обмена }
 writeln('after:'); print(mx);
 readln;
end.


Задание поменять местами столбцы матрицы по к-той строке. Всё работает отлично но появляются какието не понятные нули в матрице покажите где ошибка
volvo
 { Заполнение матрицы }
 for i := 1 to size_row do
   for j := 1 to size_col do
     mx[j][i] := random(10)+2; { <--- Индексы !!! }
vadim(b)
Вопрос 2. Как сделать ввод размерности матрицы с клавиатуры?!
volvo
Ну, тогда тебе прямая дорога в Динамические массивы и матрицы
мисс_граффити
Или, если Вы еще такого не проходили, а выходить за рамки курса боишься - просто создавай большой массив и работай с его кусочком (размеры которого можно спросить у пользователя).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.