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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2008, 00:19   #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 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сменить язык в Паскаль 7.0 ??? раньше работало, сейчас не работает! koir Помощь студентам 2 19.06.2008 21:32
Ошибка в сортировке Veiron Общие вопросы Delphi 14 21.01.2008 21:35
Паскаль. Напишите программу,удваивающую каждый символ в заданном тексте Yola Помощь студентам 2 19.11.2007 17:31