Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2009, 09:07   #1
alexantonov
 
Регистрация: 14.10.2009
Сообщений: 7
По умолчанию помогите найти ошибочку

помогите найти ошибку
задачка таже: в матрице a[1..n,1..m] упорядочить эл-ты столбца, содержащего наибольшее кол-во отриц. чисел по убванию

программа сортирует последний столбец а где ошибка


Код:
uses crt;
const n=5; m=5;
var a:array[1..n,1..m] of integer;
var b:array[1..m] of integer; pr:boolean;
i,j,nom,max,buf,k:integer;
begin
clrscr;

randomize;
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=-5+random(10);
write (a[i,j]:4);

end;
writeln;
end;

for i:=1 to m do begin
for j:=1 to n do begin
if (a[i,j]<0) then b[j]:=b[j]+1; nom:=j;
end;
end;
k:=n;
repeat pr:=false; k:=k-1;
for i:=1 to k do
if a[i,nom]<a[i+1,nom]
then begin buf:=a[i,nom];
a[i,nom]:=a[i+1,nom];
a[i+1,nom]:=buf;
pr:=true;
end;
until not pr;
for i:=1 to n do begin
for j:=1 to m do begin
write(a[i,j]:4);end; writeln;
end;
end.
alexantonov вне форума Ответить с цитированием
Старый 26.10.2009, 09:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну вообще сортировку принято делать так:
Код:
for j:=1 to n-1 do begin
 for i:=1 to n-1 do begin
  if a[i,nom]<a[i+1,nom]then begin
   buf:=a[i,nom];
   a[i,nom]:=a[i+1,nom];
   a[i+1,nom]:=buf;
  end;
 end;
end;
P.S. Я бы все с нуля переделал, помоему это гиблый вариант...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2009, 11:35   #3
Грымзик
Пользователь
 
Регистрация: 17.09.2009
Сообщений: 40
По умолчанию

Он сортирует массив с индексом nom.
А что это такое?
Код:
for i:=1 to m do begin
for j:=1 to n do begin
if (a[i,j]<0) then b[j]:=b[j]+1; nom:=j;
end;
end;
Т.е если в столбце есть хоть один отрицательный элемент,
то nom есть индекс этого столбца.
надо так
Код:
min:=100;
for j:=1 to n do begin
	for i:=1 to m do begin
		if (a[i,j]<0) then 
	b[j]:=b[j]+1;
	end;
	if b[j]<min then begin
		indeks:=j;
		min:=b[j];
	end;
end;
Грымзик вне форума Ответить с цитированием
Старый 26.10.2009, 14:00   #4
alexantonov
 
Регистрация: 14.10.2009
Сообщений: 7
По умолчанию

сортировка у меня правильная мы с училкой решали так, а вот наибольшее кол-во отриц. не правильно
alexantonov вне форума Ответить с цитированием
Старый 26.10.2009, 14:26   #5
Грымзик
Пользователь
 
Регистрация: 17.09.2009
Сообщений: 40
По умолчанию

А я ничего про сортировку и не говорю, я говорила только
про заполнение массива b
Грымзик вне форума Ответить с цитированием
Старый 26.10.2009, 18:15   #6
alexantonov
 
Регистрация: 14.10.2009
Сообщений: 7
По умолчанию

в матрице a[1..n,1..m] упорядочить эл-ты столбца, содержащего наибольшее кол-во отриц. чисел по убванию

вопрос а как сделать если таких столбцов(одинаковых) 2 чтоб не просто первый сортировал а 2


uses crt;
const n=3; m=3;
var a:array[1..n,1..m] of integer;
var b:array[1..m] of integer; pr:boolean;
i,j,nom,max,buf,k,min,indeks:intege r;
begin
clrscr;

randomize;
for i:=1 to n do begin
for j:=1 to m do begin
a[i,j]:=-5+random(10);
write (a[i,j]:4);

end;
writeln;
end;
min:=-100;
for j:=1 to n do begin
for i:=1 to m do begin
if (a[i,j]<0) then
b[j]:=b[j]+1;
end;
if b[j]>min then begin
indeks:=j;
min:=b[j];
end;

end;
k:=n;
repeat pr:=false; k:=k-1;
for i:=1 to k do
if a[i,indeks]<a[i+1,indeks]
then begin buf:=a[i,indeks];
a[i,indeks]:=a[i+1,indeks];
a[i+1,indeks]:=buf;
pr:=true;
end;
until not pr;
for i:=1 to n do begin
for j:=1 to m do begin
write(a[i,j]:4);end; writeln;
end;
end.

Последний раз редактировалось alexantonov; 26.10.2009 в 18:20.
alexantonov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти Alex2009 Свободное общение 4 27.06.2009 19:47
Делфи выдаёт ошибочку, мот кто знает что это такое))) PUSHkiN Помощь студентам 9 28.01.2009 23:51
Помогите найти Sanek_ntsk Свободное общение 0 15.11.2007 21:12
ПОМОГИТЕ НАЙТИ A_M_I Общие вопросы Delphi 3 13.07.2007 07:58