Помощь - Поиск - Пользователи - Календарь
Полная версия: Двумерные массивы
Форум «Всё о Паскале» > 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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.