Статистика
Всего в нашей базе более 4 327 663 вопросов и 6 445 976 ответов!

Дан одномерный массив, сформировать из него двухмерный отсортированный змейкой: Начиная с правого нижнего угла вертикально. Pascal ABC

10-11 класс

Вот код, только здесь выводится с левого угла, а мне нужно с правого:
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.
Помогите пожалуйста

Yaleksey2012 05 июля 2016 г., 20:37:11 (7 лет назад)
Рейтинг
+ 0 -
0 Жалоба
+ 0 -
Kucinsanzhela
05 июля 2016 г., 22:46:57 (7 лет назад)

uses
  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





+ 0 -
Tanyshka199430mail
05 июля 2016 г., 23:37:29 (7 лет назад)

кто-нибудь может помочь?

+ 0 -
Ksenia255
06 июля 2016 г., 1:14:10 (7 лет назад)

Комментарий удален

+ 0 -
пущка
06 июля 2016 г., 3:57:21 (7 лет назад)

хорошо, извиняюсь

Ответить

Другие вопросы из категории

Помогите пожалуйста срочно нужно!!

массив целых чисел из 10 элементов заполнить случайным образом. упорядочить массив по возрастанию. подсчитать количество и произведение элементов массива, больших 20 и меньших 50, вывести полученный результат

При попытке осуществить запросы к поисковому серверу, было найдено следующее количество страниц по каждому запросу: математика - 4300

физика|математика - 6700

физика&математика - 2100

сколько страниц будет найдено по запросу физика?

Читайте также

Паскаль помогите пжл!!!!!! Дан одномерный массив, состоящий из вещественных элементов. Найти произведение элементов массива,

расположенных между максимальным и минимальным элементами.

Дан одномерный массив, состоящий из вещественных элементов. Найти произведение элементов массива, расположенных между максимальным по модулю и минимальным по модулю элементами

ну или исправьте мое пжл

program fgf;
var mas:array[1..100] of real;
max,min:real;
i,n,c,b:shortint;
p:real;
f1,g:text;
begin;
assign (f1, 'input.txt');
reset (f1);
readln (f1, n);

for i:=1 to N do read (mas[i]);
max:=mas[i];
for i:=2 to N do begin
if mas[i]>max then begin
max:=mas[i];
c:=i;
end;
end;
min:=mas[1];
for i:=2 to N do begin
if mas[i]<min then begin
max:=mas[i];
b:=i;
end;
end;
close(f1);
assign (g, 'output.txt');
rewrite (g);
p:=1;
if b<c then I:=b+1 and c-1

else for I:=c+1 to b-1 do p:=p*mas[i];

if (n<3) or (b+1=c) or (c+1=b) then writeln(g,'0.00') else write(p:3:3) ;

close (g);
end.

Дан одномерный массив целых чисел, заполненный

случайным образом числами из промежутка [-40, 30]. Массив данных хранится в
файле. Удалить из него все элементы, которые состоят из одинаковых цифр.
Результат записать в другой файл.

Написать программу в C++

Дан одномерный массив x из n элементов.
Найти порядковый номер первого по счёту
положительного элемента с чётным порядковым номером. Все отрицательные элементы
после него переписать в массив y.



Вы находитесь на странице вопроса "Дан одномерный массив, сформировать из него двухмерный отсортированный змейкой: Начиная с правого нижнего угла вертикально. Pascal ABC", категории "информатика". Данный вопрос относится к разделу "10-11" классов. Здесь вы сможете получить ответ, а также обсудить вопрос с посетителями сайта. Автоматический умный поиск поможет найти похожие вопросы в категории "информатика". Если ваш вопрос отличается или ответы не подходят, вы можете задать новый вопрос, воспользовавшись кнопкой в верхней части сайта.