Помощь - Поиск - Пользователи - Календарь
Полная версия: Двумерные массивы
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
vadim(b)
Упорядочить столбцы матрицы a[m,n] в порядке возрастания к-ой строки. Не давно с вашей помощью и ващим faq-ом сделел её, но преподы сказали что этот вариант слишком сложен. И в общих словах получилось вот-так:
var
a:array[1..100,1..100] of integer;
min,k,n,m,i,j:integer;
begin
randomize;

readln(n);
readln(m);
for i:=1 to n do begin
for j:=1 to m do
begin
a[i,j]:=random(10);
write(a[i,j]:3);
end; writeln;
end;
readln(k);
for i:=1 to n-1 do
for j:=1 to m-1 do
if a[k,j]>a[k,j+1] then

for k:=1 to m do begin //я думаю что броблема в этом цикле

min:=a[k,j];
a[k,j]:=a[k,j+1];
a[k,j+1]:=min
end;
for i:=1 to n do begin
for j:=1 to m do
begin
write(a[i,j]:3);
end;
writeln;
end;
readln;
end.

НО вот проблема- без того цикла упорядовачивается только 1 строка, а с этим циклом передвигаются столбцы но только как-то не повозрастанию, найдите ошибку плиз к понедельнику надо сделать.
volvo
Программу отформатируй... Мало найдется желающих глаза себе ломать, выискивая, где тут у тебя цикл начинается, а где - заканчивается...
vadim(b)
Вот так вроде красиивее
var
a:array[1..100,1..100] of integer;
min,k,n,m,i,j:integer;
begin
randomize;

readln(n);
readln(m);
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(10);
write(a[i,j]:3);
end;
writeln;
end;
readln(k);
for i:=1 to n-1 do
for j:=1 to m-1 do
if a[k,j]>a[k,j+1] then
for k:=1 to m do //я думаю что броблема в этом цикле
begin
min:=a[k,j];
a[k,j]:=a[k,j+1];
a[k,j+1]:=min
end;
for i:=1 to n do
begin
for j:=1 to m do
begin
write(a[i,j]:3);
end;
writeln;
end;
readln;
end.
мисс_граффити
по-моему, она не сложная, а неправильная.
какое ты имеешь право менять k? вроде номер строки должен один раз задаваться пользователем и потом оставаться неизменным.
vadim(b)
Ну хорошо вот накатал ещё один код только он может рабоать только с квадратной матрицей найдите ошибку, а лучше напишите как будет правильнееsmile.gif
var
a:array[1..100,1..100] of integer;
min,g,k,n,m,i,j:integer;
begin
randomize;
readln(k);
readln(n);
readln(m);
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(10);
write(a[i,j]:3);
end;
writeln;
end;
for g:=1 to 90 do
for i:=1 to n-1 do
begin
if a[k,i]>a[k,i+1] then
begin
for j:=1 to m do
begin
min:=a[j,i];
a[j,i]:=a[j,i+1];
a[j,i+1]:=min;
end;
end;
end;
writeln('--------------------');

for i:=1 to n do
begin
for j:=1 to m do
begin
write(a[i,j]:3);
end;
writeln;
end;

readln;
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.