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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2008, 00:04   #1
Devo4ka
 
Регистрация: 26.11.2008
Сообщений: 2
По умолчанию Помогите с сортировкой в Паскале!

Люди, пожалуйста, помогите мне! Всю программу написала, проблема осталась только с сортировкой! Скажите, в чем моя ошибка в сортировке, или напишите, как правильно сортировать. Заранее спасибо. Очень надеюсь на вашу помощь.

Задача:Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.

Текст программы:

program l;
const m=4;n=3;
type matrix=array [1..m,1..n] of integer;
vector=array[1..m] of integer;
var a:matrix;
v:vector;
kol:integer;

procedure vvod (var a:matrix);
var i,j:integer;
begin
writeln('vvod');
For i:=1 to m do
For j:=1 to n do
readln (a[i,j]);
end;

Procedure kolich (a:matrix; var kol:integer);
var i,j,f: integer;
begin
kol:= 0;
For j:=1 to n do
begin
f:=0;
for i:=1 to m do
begin
if a[i,j]=0 then f:=1;
end;
If f=0 then kol:=kol+1
end;
end;


procedure summ (a:matrix; var v:vector);
var i,j: integer;
begin
for i:=1 to m do
begin
v[i]:=0;
for j:=1 to n do
if (a[i,j])>0 then
if((a[i,j]) mod 2)=0 then v[i]:=v[i]+a[i,j];
end;
end;

procedure vyvod (a:matrix;var v:vector);
var i,j: integer;
begin
for i:=1 to m do
begin
for j:=1 to n do
write (a[i,j]);
writeln;
end;
End;

procedure sort (a:matrix;var v:vector);
var buf_sum:integer;i,j,min,buf_a:integ er;
begin
for i:=1 to m-1 do
begin
min:=1;
for j:=i+1 to n do
if v[i]<v[min] then min:=j;
buf_sum:=v[i];
v[i]:=v[min];
v[min]:=buf_sum;
for j:=1 to n do
begin
Buf_a:=a[i,j];
a[i,j]:=a[min,j];
a[min,j]:=buf_a;
end;
end;
end;

begin
vvod(a);
kolich(a,kol);
summ(a,v);
vyvod(a,v);
sort(a,v);
vyvod(a,v);
writeln ('kolichestvo stolbikov ne soderjashih nyleu ravno ', kol);
readln;
end.
Devo4ka вне форума Ответить с цитированием
Старый 26.11.2008, 08:54   #2
MalexG
Форумчанин
 
Регистрация: 06.11.2008
Сообщений: 100
По умолчанию

Вот пример быстрой сортировки с индексами. В этой сортировке исп. доп. массив индексов строк (или столбцов) для сортировки матрицы в заданном порядке. Надеюсь, разберетесь.
Вложения
Тип файла: zip Project.zip (1.2 Кб, 18 просмотров)
MalexG вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с сортировкой(исходник прилагается) Зеленый Общие вопросы C/C++ 8 07.10.2008 23:19
Помогите с сортировкой. Dissonance БД в Delphi 14 05.06.2008 15:35
Помогите с MSD сортировкой! vova_b Помощь студентам 6 28.05.2008 20:33
Помогите с сортировкой AHTOXA Общие вопросы Delphi 2 08.06.2007 12:46
Помогите с сортировкой radist Паскаль, Turbo Pascal, PascalABC.NET 5 23.04.2007 12:50