Версия для печати темы
Образовательный студенческий форум _ Информатика / Программирование _ массив в паскале
Автор: otherside 9.4.2008, 13:45
подскажите пожалуйста как написать программу в паскале, чтобы она сортировала двумерный массив по возрастанию. размер и числа в массиве запрашиваются с клавиатуры. на экране должен появится двумерный массив, затем одномерный и после двумерный отсортированный по возрастанию.
Автор: creer 9.4.2008, 16:28
А как Вы представляете двухмерный отсортированный массив?
Автор: otherside 9.4.2008, 16:34
Цитата(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 9.4.2008, 16:59
Понятно 
А с какой частью возникают проблемы?
Автор: otherside 9.4.2008, 17:12
Цитата(creer @ 10.4.2008, 0:59)

Понятно

А с какой частью возникают проблемы?
да в принципе со всей
Автор: creer 9.4.2008, 17:56
Это плохо... Тогда может стоит почитать, например, http://www.intuit.ru/department/pl/plpascal/?
Автор: otherside 10.4.2008, 3:57
Цитата(creer @ 10.4.2008, 1:56)

Это плохо... Тогда может стоит почитать, например, http://www.intuit.ru/department/pl/plpascal/?
там описана только сортировка одномерного массива..
Автор: creer 10.4.2008, 17:46
Ну Вы же сами сказали, что необходимо сделать из двухмерного массива одномерный
.
Думаю будет это примерно так.
Код
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 17.4.2008, 7:47
Код
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 и лекции читайте
Автор: otherside 17.4.2008, 10:27
Цитата(Deft @ 17.4.2008, 15:47)

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

спасибочки большое

буду учить
Автор: Deft 17.4.2008, 13:09
Да не за что
Автор: Руководитель проекта 17.4.2008, 13:43
Цитата(Deft @ 17.4.2008, 17:09)

Да не за что

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

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

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

.
Ну-с, забавная - не забавная, а работает

Оптимизация уже проблемы того, кому эта задача нужна.
Автор: Руководитель проекта 17.4.2008, 19:27
creer, Deft, рад, что вы нашли общую тему для обсуждения
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)