Помощь - Поиск - Пользователи - Календарь
Полная версия: массив в паскале > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
otherside
подскажите пожалуйста как написать программу в паскале, чтобы она сортировала двумерный массив по возрастанию. размер и числа в массиве запрашиваются с клавиатуры. на экране должен появится двумерный массив, затем одномерный и после двумерный отсортированный по возрастанию.
creer
А как Вы представляете двухмерный отсортированный массив?
otherside
Цитата(creer @ 10.4.2008, 0:28) *

А как Вы представляете двухмерный отсортированный массив?

ну допусти массив
1 4 5 6
3 5 6 8
2 4 6 8
9 0 1 3
потом паскаль должен сделать из него ономерный 0112334455666889
а затем записать эту сортировку обратно в двухмерный
0 1 1 2
3 3 4 4
5 5 6 6
6 8 8 9
creer
Понятно smile.gif
А с какой частью возникают проблемы?
otherside
Цитата(creer @ 10.4.2008, 0:59) *

Понятно smile.gif
А с какой частью возникают проблемы?

да в принципе со всей sad.gif
creer
Это плохо... Тогда может стоит почитать, например, здесь?
otherside
Цитата(creer @ 10.4.2008, 1:56) *

Это плохо... Тогда может стоит почитать, например, здесь?

там описана только сортировка одномерного массива..
creer
Ну Вы же сами сказали, что необходимо сделать из двухмерного массива одномерный smile.gif.
Думаю будет это примерно так.
Код

const
  N=5;
  M=3;

var
  da:array[1..N, 1..M] of integer;
  oa:array[1..N*M] of integer;
---

for i:=1 to N do
  for j:=1 to M do
    oa[(i-1)*M+j]:=da[i,j];
Deft
Код

uses
  crt;
const
  { Double array max count of elements }
  max_elem = 10;
var
  a: array[1..max_elem, 1..max_elem] of integer;
  b: array[1..100] of integer;
  i,j,n,m: 1..max_elem;
  idx: 1..100;
  ident, c: integer;

begin
  clrscr;

{ Read data }
  write('n:> ');
  readln(n);
  write('m:> ');
  readln(m);
  for i:=1 to n do
    for j:=1 to m do
    begin
      write('a[',i,',',j,']:> ');
      readln(a[i,j]);
    end;

{ View double array }
  writeln('Double array:');
  for i:=1 to n do
  begin
    for j:= 1 to m do
      write(a[i,j],' ');
    writeln;
  end;
  writeln;

{ Create Single array }
  idx:= 1;
  for i:=1 to n do
    for j:=1 to m do
    begin
      b[idx]:= a[i, j];
      inc(idx);
    end;
  dec(idx);

{ View single array before sorting }
  writeln('Single array before sorting:');
  for i:= 1 to idx do
    write(b[i],' ');
  writeln;
  writeln;

{ Sorting array }
  ident:= 1;
  while (ident <> 0) do begin
    i:= 1;
    ident:= 0;
    while (i <> idx) do
    begin
      if b[i] > b[i + 1] then
      begin
        c:= b[i];
        b[i]:= b[i + 1];
        b[i + 1]:= c;
        ident:= 1;
      end;
      inc(i);
    end;
  end;

{ View sorted single array }
  writeln('Single array after sorting:');
  for i:=1 to idx do
    write(b[i],' ');
  readln;
end.


Полностью решенная задача. Ничего в ней сложного, учите Pascal и лекции читайте smile.gif
otherside
Цитата(Deft @ 17.4.2008, 15:47) *

Полностью решенная задача. Ничего в ней сложного, учите Pascal и лекции читайте smile.gif

спасибочки большое smile.gif буду учить

Deft
Да не за что smile.gif
Руководитель проекта
Цитата(Deft @ 17.4.2008, 17:09) *

Да не за что smile.gif

Спасибо, что вы помогли посетителю нашего форума, но... у нас не принято выкладывать все решение целиком.
Deft
Цитата(Руководитель проекта @ 17.4.2008, 13:43) *

Спасибо, что вы помогли посетителю нашего форума, но... у нас не принято выкладывать все решение целиком.


Хорошо, изивините, теперь буду знать. Просто программа по сути была легкой, поэтому решил написать её полностью.
creer
Deft, отличное решение. Сортировка такая забавная smile.gif.
Deft
Цитата(creer @ 17.4.2008, 16:49) *

Deft, отличное решение. Сортировка такая забавная smile.gif.


Ну-с, забавная - не забавная, а работает smile.gif Оптимизация уже проблемы того, кому эта задача нужна.
Руководитель проекта
creer, Deft, рад, что вы нашли общую тему для обсуждения
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.