Требования:
1)Как console apllication
2)Использовать, пока только то что прошли, а тоесть массивы и циклы
Задача:
Дана целочисленная матриц А(n,m).Упорядочить по возрастанию элементы каждого столбца матрицы.
Упорядочивания матрицы
Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill
Делаешь цикл по каждому столбцу
В цикле каждый элемент столбца переписать в массив
Упорядочить массив любым методом, которых несколько сотен. Самый банальный - сортировка пузырьком
Переписать упорядоченный массив в соответствующий столбец матрицы
В цикле каждый элемент столбца переписать в массив
Упорядочить массив любым методом, которых несколько сотен. Самый банальный - сортировка пузырьком
Переписать упорядоченный массив в соответствующий столбец матрицы
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ребят вот какой-то код наваял.. Ошибка в просчете появляется лишь в некоторых столбцах...
Немогли ли вы мне баг мой найти?
var
x:TDarr;
i,j,n,m,d,max,imax,c,z:integer;
begin
write('kol-vo ctroc=');
readln(n);
write('kol-vo ctolbcov=');
readln(m);
setlength(x,n,m);
for i:=0 to n-1 do
for j:=0 to m-1 do
read(x[j]);
for j:=0 to m-1 do
for i:=0 to n-1 do
for d:=1 to n-1 do
begin
max:=x[0][0];
imax:=0;
for c:=0 to n-d do
if(x[c][j]>max)then
begin
max:=x[c][j];
imax:=c;
end;
x[imax][j]:=x[n-d][j];
x[n-d][j]:=max;
end;
//вывод построчно
for i:=0 to n-1 do
begin
writeln;
for j:=0 to m-1 do
write(x[j],' ');
end;
readln;
readln;
end.
Немогли ли вы мне баг мой найти?
var
x:TDarr;
i,j,n,m,d,max,imax,c,z:integer;
begin
write('kol-vo ctroc=');
readln(n);
write('kol-vo ctolbcov=');
readln(m);
setlength(x,n,m);
for i:=0 to n-1 do
for j:=0 to m-1 do
read(x[j]);
for j:=0 to m-1 do
for i:=0 to n-1 do
for d:=1 to n-1 do
begin
max:=x[0][0];
imax:=0;
for c:=0 to n-d do
if(x[c][j]>max)then
begin
max:=x[c][j];
imax:=c;
end;
x[imax][j]:=x[n-d][j];
x[n-d][j]:=max;
end;
//вывод построчно
for i:=0 to n-1 do
begin
writeln;
for j:=0 to m-1 do
write(x[j],' ');
end;
readln;
readln;
end.
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
ну я прям не знаю, что делать.
попробуй циклы организовывать от 1 до n и m, хотя тут косяка быть не должно, но ты попробуй...
попробуй циклы организовывать от 1 до n и m, хотя тут косяка быть не должно, но ты попробуй...
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
С паскалем помочь не могу, если поможет - вот код на Си.
хотя щас попробую на паскаль перевести
Код: Выделить всё
int i,j,k,tmp;
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
for (k=j;k<n;k++)
{
if (A[j][i]>A[k][i])
{
tmp=A[j][i];
A[j][i]=A[k][i];
A[k][i]=tmp;
}
}
}
}

Код: Выделить всё
const n=10;
const m=10;
var i,j,k,tmp: integer;
var A:array[n][m] of integer;
begin
{ -- Здесь вводи массив А с клавиатуры либо рандомно заполняй его -- }
for i = 0 to m-1 do
begin
for j = 0 to n-1 do
begin
for k = j to n-1 do
begin
tmp:=A[j][i];
A[j][i]:=A[k][i];
A[k][i]:=tmp;
end;
end;
end;
end.
Даже самое длинное путешествие начинается с первого шага.