Вывести самую нижнюю строку матрицы в обратном порядке - Turbo Pascal
Формулировка задачи:
Здравствуйте!
Нужна помощь: как с помощью данной процедуры
вывести только самую нижнюю строку матрицы в обратном порядке, а не всю матрицу целиком.
Заранее спасибо.
Вся программа целиком:
Листинг программы
- procedure M2MS;
- var i, j, k: integer;
- begin
- k := 1;
- for i:=N downto 1 do
- for j:=N downto 1 do begin
- MS[k] := M[i, j];
- k := k + 1;
- end;
- end;
Листинг программы
- Program Matrix;
- Uses Crt;
- Var M: array [1..15, 1..15] of Integer;
- N: Integer;
- MS: array [1..225] of Integer;
- min, max: Integer;
- function InputN: Integer;
- var n: integer;
- check: boolean;
- begin
- repeat
- writeln('Vvedite razmernost matricy (®Ot 5 do 15)');
- readln(n);
- if (n >= 5) and (n <= 15) then check := true
- else check := false;
- until check;
- InputN := n;
- end;
- procedure RandomMatrix(a, b: integer);
- var i, j: integer;
- begin
- randomize;
- for i:=1 to N do
- for j:=1 to N do
- M[i, j] := a + random(b-a+1);
- end;
- procedure WriteMatrix;
- var i, j: integer;
- begin
- for i:=1 to N do begin
- for j:=1 to N do write(M[i, j]:5);
- writeln;
- end;
- end;
- procedure Exchange;
- var i, j, mx, x: integer;
- begin
- mx := N div 2;
- for i:=1 to mx do
- for j:=1 to (mx-i+1) do begin
- x := M[N-mx+i, N-mx+j];
- M[N-mx+i, N-mx+j] := M[j, N-i+1];
- M[j, N-i+1] := x;
- end;
- end;
- procedure WriteColoredMatrix;
- var i, j, mx: integer;
- begin
- mx := N div 2;
- for i:=1 to N do begin
- for j:=1 to N do begin
- TextColor(LightGray);
- if (i <= mx) and (j >= (N-mx+1)) then begin
- if j >= (N-mx+i) then TextColor(Yellow);
- end else if (i >= (N-mx+1)) and (j >= (N-mx+1)) then begin
- if j <= (2*N-i-mx+1) then TextColor(Red);
- end;
- write(M[i, j]:5);
- end;
- writeln;
- end;
- TextColor(LightGray);
- end;
- procedure M2MS;
- var i, j, k: integer;
- begin
- k := 1;
- for i:=N downto 1 do
- for j:=N downto 1 do begin
- MS[k] := M[i, j];
- k := k + 1;
- end;
- end;
- procedure WriteMatrixString;
- var i: integer;
- begin
- TextColor(Green);
- for i:=1 to sqr(N) do write(MS[i]:5);
- writeln;
- TextColor(LightGray);
- end;
- procedure SortVozrast;
- var i, j, m: integer;
- begin
- for i:=1 to sqr(N)-1 do begin
- m := i;
- for j:=i+1 to sqr(N) do
- if MS[j] < MS[m] then m := j;
- if m <> i then begin
- j := MS[i];
- MS[i] := MS[m];
- MS[m] := j;
- end;
- end;
- end;
- procedure SortUbyv;
- var i, j, m: integer;
- begin
- for i:=1 to sqr(N)-1 do begin
- m := i;
- for j:=i+1 to sqr(N) do
- if MS[j] > MS[m] then m := j;
- if m <> i then begin
- j := MS[i];
- MS[i] := MS[m];
- MS[m] := j;
- end;
- end;
- end;
- procedure FindMinMax;
- var i, j, mx: integer;
- check: boolean;
- begin
- min := M[1, 1];
- max := M[1, 1];
- mx := N div 2;
- for i:=1 to N do
- for j:=1 to N do begin
- check := true;
- if (i <= mx) and (j >= (N-mx+1)) then begin
- if j >= (N-mx+i) then check := false;
- end else if (i >= (N-mx+1)) and (j >= (N-mx+1)) then begin
- if j <= (2*N-i-mx+1) then check := false;
- end;
- if check then begin
- if M[i, j] < min then min := M[i, j];
- if M[i, j] > max then max := M[i, j];
- end;
- end;
- end;
- Begin
- ClrScr;
- TextColor(White);
- writeln('========= Kursovaya rabota =========');
- writeln;
- TextColor(LightGray);
- N := InputN;
- RandomMatrix(-100, 100);
- writeln;
- writeln('Zapolnennaya matrica');
- WriteMatrix;
- writeln;
- writeln('Nazhmite lyubuyu klavishu...');
- readkey;
- Exchange;
- writeln;
- writeln('Preobrazovannaya matrica');
- WriteColoredMatrix;
- writeln;
- writeln('Nazhmite lyubuyu klavishu...');
- readkey;
- M2MS;
- writeln;
- writeln('Matrica-stroka poluchennaya obhodom');
- WriteMatrixString;
- writeln;
- writeln('Nazhmite lyubuyu klavishu...');
- readkey;
- SortVozrast;
- writeln;
- writeln('Matrica-stroka sortirovannaya po vozrastaniyu');
- WriteMatrixString;
- writeln;
- writeln('Nazhmite lyubuyu klavishu...');
- readkey;
- SortUbyv;
- writeln;
- writeln('Matrica-stroka sortirovannaya po ubyvaniyu');
- WriteMatrixString;
- writeln;
- writeln('Nazhmite lyubuyu klavishu...');
- readkey;
- writeln;
- writeln('Poisk max i min elementa v matrice');
- WriteColoredMatrix;
- FindMinMax;
- writeln;
- writeln('Minimalnyi element = ', min);
- writeln('Maximalnyi element = ', max);
- writeln;
- writeln('Nazhmite lyubuyu klavishu dlya zaversheniya programmy');
- readkey;
- End.
Либо как вывести нижнюю строку матрицы иным способом. Спасибо
Решение задачи: «Вывести самую нижнюю строку матрицы в обратном порядке»
textual
Листинг программы
- repeat
- writeln('Vvedite razmernost matricy (®Ot 5 do 15)');
- readln(n);
- if (n >= 5) and (n <= 15) then check := true
- else check := false;
- until check;
Объяснение кода листинга программы
- В цикле repeat-until происходит чтение размера матрицы от пользователя и проверка его значения на соответствие диапазону от 5 до 15.
- Если пользователь ввел корректное значение, то переменная check принимает значение true, иначе - false.
- Цикл repeat продолжается до тех пор, пока значение переменной check не станет равным true.
- После выхода из цикла, выводится сообщение 'Vvedite razmernost matricy (®Ot 5 do 15)', что означает
Введите размер матрицы (от 5 до 15)
. - Затем, с помощью функции readln(), считывается введенное пользователем значение и сохраняется в переменной n.
- Проверяется, соответствует ли введенное значение диапазону от 5 до 15. Если да, то переменная check принимает значение true, иначе - false.
- Цикл repeat-until повторяется до тех пор, пока значение переменной check не станет равным true.
- Когда это условие выполняется, цикл завершается и программа переходит к выводу самой нижней строки матрицы в обратном порядке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д