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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2011, 20:30   #1
nestadima
 
Регистрация: 22.03.2009
Сообщений: 7
По умолчанию Переделать в метод простых вставок

Задача такая: 3.43. Дана матрица. Упорядочить элементы столбцов матрицы по неубыванию, а сами столбцы по возрастанию произведения четных элементов столбцов. Использовать сортировку простыми вставками, реализовав метод в виде подпрограммы.

Я ее реализовал, но. Помогите переделать в метод простыми вставками, и как это реализовать в виде подпрограммы. Подскажите или покажите.
Код:
uses crt;
const
     nmax=100;
type
    arr=array[0..nmax,0..nmax] of integer;
var
   z:arr;
   s,i,j,buf,n,m,p,k,ch:integer;
begin
Writeln('ВВод матрицы');
write('Ввод кол-вo строк n=');
readln(n);
write('Ввод кол-во стоблцов m=');
readln(m);
for i:=1 to n do
for j:=1 to m do
 begin
  Write('z[',i,',',j,']=');
  readln(z[i,j]);
 end;
clrscr;
writeln('Исходная матрица:');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(z[i,j]:4);
  writeln;
 end;
writeln;
for j:=1 to m do
for k:=1 to n do
for i:=n downto k+1 do
if z[i-1,j]>z[i,j] then
 begin
  buf:=z[i,j];
  z[i,j]:=z[i-1,j];
  z[i-1,j]:=buf;
 end;
for j:=1 to m do
 begin
  s:=1;ch:=0;
  for i:=1 to n do
  if z[i,j] mod 2 = 0 then
   begin
    ch:=1;
    s:=s*z[i,j];
   end;
  if ch=0 then z[0,j]:=0;
  else z[0,j]:=s;
 end;
for p:=1 to m do
for i:=1 to m-1 do
if z[0,i]>z[0,i+1] then
for j:=0 to n do
   begin
    buf:=z[j,i];
    z[j,i]:=z[j,i+1];
    z[j,i+1]:=buf;
   end;
writeln('Отсортированная матрица:');
for i:=1 to n do
 begin
  write(' ':7);
  for j:=1 to m do
  write(z[i,j]:4);
  writeln;
 end;
write('Произв.');
for i:=1 to m do
write(z[0,i]:4);
end.
nestadima вне форума Ответить с цитированием
Старый 23.11.2011, 23:34   #2
Camaro Chevelle
Форумчанин
 
Регистрация: 05.11.2011
Сообщений: 102
По умолчанию

простыми вставками это вроде так в общих чертах
Код:
for i:=2 to n do begin
  buf:=item[i];
  j:=i-1;
  while (j>0) and (buf<item[j]) do begin
    item[j+1]:=item[j];
    dec(j);
  end;
  item[j+1]:=buf;
end;
ну а в виде подпрограммы в чём проблема реализовать? используй процедуру, выходным параметром которой будет сортируемая структура данных

Последний раз редактировалось rpy3uH; 25.11.2011 в 14:45.
Camaro Chevelle вне форума Ответить с цитированием
Старый 24.11.2011, 19:40   #3
nestadima
 
Регистрация: 22.03.2009
Сообщений: 7
По умолчанию

Подскажите это правельная реализация функции????
Код:
uses crt;
const
     nmax=100;
type
    arr=array[0..nmax,0..nmax] of integer;
var
   z:arr;
   s,i,j,buf,n,m,p,k,ch:integer;
   
function vivod(i,j: integer): integer;
begin
  for i:=1 to n do
 begin
  write(' ':7);
  for j:=1 to m do
  write(z[i,j]:4);
  writeln;
 end;
 end;

begin
Writeln('ÂÂîä ìàòðèöû');
write('Ââîä êîë-âo ñòðîê n=');
readln(n);
write('Ââîä êîë-âî ñòîáëöîâ m=');
readln(m);
for i:=1 to n do
for j:=1 to m do
 begin
  Write('z[',i,',',j,']=');
  readln(z[i,j]);
 end;
clrscr;
writeln('Èñõîäíàÿ ìàòðèöà:');
for i:=1 to n do
 begin
  for j:=1 to m do
  write(z[i,j]:4);
  writeln;
 end;
writeln;
for j:=1 to m do
for k:=1 to n do
for i:=n downto k+1 do
if z[i-1,j]>z[i,j] then
 begin
  buf:=z[i,j];
  z[i,j]:=z[i-1,j];
  z[i-1,j]:=buf;
 end;
for j:=1 to m do
 begin
  s:=1;ch:=0;
  for i:=1 to n do
  if z[i,j] mod 2 = 0 then
   begin
    ch:=1;
    s:=s*z[i,j];
   end;
  if ch=0 then z[0,j]:=0
  else z[0,j]:=s;
 end;
for p:=1 to m do
for i:=1 to m-1 do
if z[0,i]>z[0,i+1] then
for j:=0 to n do
   begin
    buf:=z[j,i];
    z[j,i]:=z[j,i+1];
    z[j,i+1]:=buf;
   end;
writeln('Îòñîðòèðîâàííàÿ ìàòðèöà:');
 vivod(i,j);
 end.

Последний раз редактировалось nestadima; 24.11.2011 в 19:41. Причина: мимо кассы
nestadima вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка методом простых вставок в Delphi yolka Помощь студентам 1 11.01.2011 16:23
Сортировка массива методом простых вставок Маришка:=нуб Помощь студентам 6 10.11.2010 08:25
Разработка алгоритма сортировки методом простых вставок Delphi Hetsil Помощь студентам 0 12.12.2009 21:51
Сортировка методом простых вставок Mashul'ka Помощь студентам 4 09.11.2009 20:37
Сортировка-метод вставок diliana Помощь студентам 14 15.07.2009 12:13