
Дан одномерный массив, сформировать из него двухмерный отсортированный змейкой: Начиная с правого
нижнего угла вертикально. Pascal ABCВот код, только здесь выводится с левого угла, а мне нужно с правого:uses crt;var a:array [1..25] of integer; ar:array [1..25,1..25] of integer;i,n,s,j,x:integer;b:real;L:boolean;begin write('n='); readln(n); writeln('Заполните массив:'); For i:=1 to n do readln(a[i]); For i:=1 to n do For j:=i+1 to n do If a[i]>a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; s:=1; writeln('Отсортированный массив: '); For i:=1 to n do write(a[i], ' '); writeln; b:=sqrt(n); n:=round(b); writeln('Двумерный массив: '); for j:=1 to n do begin for i:=1 to n do begin ar[i,j]:=s; if (j mod 2 = 0) and (i<>n) then dec(s) else inc(s); end; s:=s+n-1; end; for i:=n downto 1 do begin for j:=1 to n do write(ar[i,j]); writeln; end;end. Помогите пожалуйста

Ответы на вопрос

crt;
var
a: array [1..25] of integer;
ar: array [1..5, 1..5] of integer;
i, j, k, n, m, x: integer;
begin
write('n=');
readln(n);
writeln('Заполните массив:');
for i := 1 to n do read(a[i]);
for i := 1 to n do
for j := i + 1 to n do
if a[i] > a[j] then begin
x := a[i];
a[i] := a[j];
a[j] := x;
end;
writeln('Отсортированный массив: ');
for i := 1 to n do write(a[i], ' ');
writeln;
n := floor(sqrt(n));
m := sqr(n);
writeln('Двумерный массив: ');
for k := 1 to m do
begin
x := (k - 1) div n;
j := n - x;
if x mod 2 = 0 then
i := n * (x + 1) + 1 - k
else
i := k - n * x;
ar[i, j] := a[k]
end;
for i := 1 to n do
begin
for j := 1 to n do write(ar[i, j]:4);
writeln
end
end.
Тестовое решение:
n=16
Заполните массив:
1 3 5 7 9 11 13 15 2 4 6 8 10 12 14 16
Отсортированный массив:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Двумерный массив:
13 12 5 4
14 11 6 3
15 10 7 2
16 9 8 1
n=25
Заполните массив:
1 3 5 7 9 11 2 4 6 8 10 12 14 13 16 17 15 20 18 19 23 25 22 21 24
Отсортированный массив:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Двумерный массив:
25 16 15 6 5
24 17 14 7 4
23 18 13 8 3
22 19 12 9 2
21 20 11 10 1



Код, который вы предоставили, сортирует одномерный массив `a` и затем формирует двумерный массив `ar` с помощью алгоритма "змейки". Однако, вывод в этом коде происходит с левого верхнего угла, а вам нужно справа нижнего угла.
Чтобы изменить вывод на вывод справа нижнего угла, вам нужно изменить порядок заполнения двумерного массива `ar`. Вместо заполнения массива сверху вниз и слева направо, вы можете заполнить его снизу вверх и слева направо.
Вот измененный код:
```pascal uses crt;
var a: array[1..25] of integer; ar: array[1..25, 1..25] of integer; i, j, n, s, x: integer; b: real; L: boolean;
begin write('n='); readln(n); writeln('Заполните массив:'); for i := 1 to n do readln(a[i]); for i := 1 to n do for j := i + 1 to n do if a[i] > a[j] then begin x := a[i]; a[i] := a[j]; a[j] := x; end; s := 1; writeln('Отсортированный массив:'); for i := 1 to n do write(a[i], ' '); writeln; b := sqrt(n); n := round(b); writeln('Двумерный массив:'); for j := n downto 1 do begin if (j mod 2 = 0) then begin for i := n downto 1 do begin ar[i, j] := s; if (i <> 1) then Inc(s); end; end else begin for i := 1 to n do begin ar[i, j] := s; if (i <> n) then Inc(s); end; end; Inc(s); end; for i := n downto 1 do begin for j := 1 to n do write(ar[i, j], ' '); writeln; end; end. ```
Теперь вывод будет начинаться с правого нижнего угла, двигаясь вертикально вверх.


Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili