Другие языки программирования и технологии
помогите, пожалуйста, с задачкой в Паскале
Дана целочисленная матрица размером n*m. Написать программу, формирующую двумерный массив по следующему правилу: элементы первой строки – в порядке возрастания индексов столбцов, элементы второй строки – в порядке убывания индексов столбцов и т. д.
Программа:
const
N = 10;
M = 10;
var
Mas : array [1..N, 1..M] of Integer;
Ind : array [1..N, 1..M] of Integer;
Row, Col, Tmp : Integer;
Sort : Boolean;
begin
WriteLn('Исходный массив: ');
Randomize;
for Row := 1 to N do
begin
for Col := 1 to M do
begin
Mas[Row, Col] := Random(100);
Write(Mas[Row, Col]:3);
Ind[Row, Col] := Col;
end;
WriteLn;
end;
for Row := 1 to N do
if Odd(Row) then
begin { чётные в порядке убывания }
repeat
Sort := False;
for Col := 1 to M - 1 do
if Mas[Row, Ind[Row, Col]] > Mas[Row, Ind[Row, Col + 1]] then
begin
Tmp := Ind[Row, Col];
Ind[Row, Col] := Ind[Row, Col + 1];
Ind[Row, Col + 1] := Tmp;
Sort := True;
end;
until Not Sort;
end
else
begin { нечётные в порядке возрастания }
repeat
Sort := False;
for Col := 1 to M - 1 do
if Mas[Row, Ind[Row, Col]] < Mas[Row, Ind[Row, Col + 1]] then
begin
Tmp := Ind[Row, Col];
Ind[Row, Col] := Ind[Row, Col + 1];
Ind[Row, Col + 1] := Tmp;
Sort := True;
end;
until Not Sort;
end;
WriteLn('Массив индексов: ');
for Row := 1 to N do
begin
for Col := 1 to M do
Write(Ind[Row, Col]:3);
WriteLn;
end;
end.
Результат работы:
Исходный массив:
8 21 59 47 63 7 12 5 46 99
75 95 12 33 12 71 10 99 68 37
10 69 25 62 86 10 34 50 36 0
61 27 54 15 91 26 68 77 4 90
5 47 73 64 19 62 16 90 66 71
50 28 75 15 40 38 95 96 60 53
73 62 68 46 38 48 41 96 42 86
3 32 94 77 32 63 95 60 42 24
94 43 84 65 49 32 51 38 74 52
30 72 17 51 17 43 78 27 26 71
Массив индексов:
8 6 1 7 2 9 4 3 5 10
8 2 1 6 9 10 4 3 5 7
10 1 6 3 7 9 8 4 2 5
5 10 8 7 1 3 2 6 4 9
1 7 5 2 6 4 9 10 3 8
8 7 3 9 10 1 5 6 2 4
5 7 9 4 6 2 3 1 10 8
7 3 4 6 8 9 2 5 10 1
6 8 2 5 7 10 4 9 3 1
7 2 10 4 6 1 8 9 3 5
const
N = 10;
M = 10;
var
Mas : array [1..N, 1..M] of Integer;
Ind : array [1..N, 1..M] of Integer;
Row, Col, Tmp : Integer;
Sort : Boolean;
begin
WriteLn('Исходный массив: ');
Randomize;
for Row := 1 to N do
begin
for Col := 1 to M do
begin
Mas[Row, Col] := Random(100);
Write(Mas[Row, Col]:3);
Ind[Row, Col] := Col;
end;
WriteLn;
end;
for Row := 1 to N do
if Odd(Row) then
begin { чётные в порядке убывания }
repeat
Sort := False;
for Col := 1 to M - 1 do
if Mas[Row, Ind[Row, Col]] > Mas[Row, Ind[Row, Col + 1]] then
begin
Tmp := Ind[Row, Col];
Ind[Row, Col] := Ind[Row, Col + 1];
Ind[Row, Col + 1] := Tmp;
Sort := True;
end;
until Not Sort;
end
else
begin { нечётные в порядке возрастания }
repeat
Sort := False;
for Col := 1 to M - 1 do
if Mas[Row, Ind[Row, Col]] < Mas[Row, Ind[Row, Col + 1]] then
begin
Tmp := Ind[Row, Col];
Ind[Row, Col] := Ind[Row, Col + 1];
Ind[Row, Col + 1] := Tmp;
Sort := True;
end;
until Not Sort;
end;
WriteLn('Массив индексов: ');
for Row := 1 to N do
begin
for Col := 1 to M do
Write(Ind[Row, Col]:3);
WriteLn;
end;
end.
Результат работы:
Исходный массив:
8 21 59 47 63 7 12 5 46 99
75 95 12 33 12 71 10 99 68 37
10 69 25 62 86 10 34 50 36 0
61 27 54 15 91 26 68 77 4 90
5 47 73 64 19 62 16 90 66 71
50 28 75 15 40 38 95 96 60 53
73 62 68 46 38 48 41 96 42 86
3 32 94 77 32 63 95 60 42 24
94 43 84 65 49 32 51 38 74 52
30 72 17 51 17 43 78 27 26 71
Массив индексов:
8 6 1 7 2 9 4 3 5 10
8 2 1 6 9 10 4 3 5 7
10 1 6 3 7 9 8 4 2 5
5 10 8 7 1 3 2 6 4 9
1 7 5 2 6 4 9 10 3 8
8 7 3 9 10 1 5 6 2 4
5 7 9 4 6 2 3 1 10 8
7 3 4 6 8 9 2 5 10 1
6 8 2 5 7 10 4 9 3 1
7 2 10 4 6 1 8 9 3 5
Похожие вопросы
- Помогите, пожалуйста, решить задачку на паскале. Заранее благодарна.
- Помогите пожалуйста решить задачку на паскале! (циклы с параметром)!!за ранее спасибо!
- Помогите пожалуйста с Заданием по Паскалю!
- Помогите пожалуйста создать программу на Паскале. Заранее всем благодарен
- Помогите пожалуйста решить задачку на С++ очень нужно (((
- Pascal. Помогите пожалуйста решить задачу в паскале !
- помогите пожалуйста составить программу в паскале
- Программирование на Паскале Помогите, пожалуйста , написать программу на паскале
- Помогите пожалуйста с опросом в паскале
- Помогите пожалуйста написать программу для Паскаля