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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2011, 10:02   #1
gennadii
Пользователь
 
Регистрация: 12.01.2011
Сообщений: 37
По умолчанию Метод Шелла

Здравствуйте, не могу разобраться с программой, вот условие: Задание 8: дана прямоугольная матрица А(M,N). Составить программу, выводящую на экран номер строки, в которой встретится хоть один отрицательный элемент. Если в строке отрицательных элементов несколько, программа должна вывести также и их количество. Из положительных элементов матрицы сформируйте одномерный массив и отсортируйте его по возрастания методом Шелла. Выведите на экран отсортированный массив. А вот, что получается у меня:
Код:
program n1;
uses crt;
const
n=5; m=7;z=35;
var
a:array[1..n,1..m] of integer;
b:array[1..z] of integer;
i,j,kolvo,c,g,l,d:integer;
p:boolean;
begin
 clrscr;
  for i:= 1 to m do begin
   writeln;
    for j:= 1 to n do begin
     a[i,j]:= -10+random(45);
     write(a[i,j]:5);
    end;
  end;
  writeln;
  for i:= 1 to m do begin
    kolvo:= 0;
    for j:= 1 to n do
     if a[i,j]< 0 then kolvo:= kolvo+1;
    if kolvo> 0 then writeln('stroka = ',i,',  kol-vo otr el = ',kolvo);
  end;
d:=z div 2;
while d>0 do
begin
  for g:=1 to z-d do     	
 begin
l:=g;		   
 repeat
      p:=false;		    
  if b[l]<b[l+d] then
 begin 
    c:=b[l];b[l]:=b[l+d];b[l+d]:=c;    
     l:=l-d;	
   p:=true;			      
end;
    until (l<=1) and p;	
  end;
  d:=d div 2;		
end;
readln;
end.
Да и беда с блок-схемой, если не затруднит, нужна ваша помощь.
gennadii вне форума Ответить с цитированием
Старый 15.06.2011, 10:26   #2
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Что т оя не вижу у тебя в программе места где ты преобразовываешь матрицу а в вектор b, Ты просто начинаешь работать с пустым вектором.
Тебе надо после вывода отриццательных элементов сделать вот так:
Код:
kolvo:= 1;
  for i:= 1 to m do begin
    for j:= 1 to n do begin
     if a[i,j]>= 0 then begin
             b[kolvo]:=a[i,j];
             kolvo:= kolvo+1;
      end;
В результате получится вектор положительных элементов размерностью от 1 до kolvo
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Старый 15.06.2011, 10:51   #3
gennadii
Пользователь
 
Регистрация: 12.01.2011
Сообщений: 37
По умолчанию

нужен метод Шелла
gennadii вне форума Ответить с цитированием
Старый 15.06.2011, 10:57   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от gennadii Посмотреть сообщение
нужен метод Шелла
На С++ пойдёт?
Перевести на паскаль сможешь?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.06.2011, 11:00   #5
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

ну вы батенька обленились, поиском можно было воспользоваться.
http://www.programmersforum.ru/showt...t=30660&page=2
http://www.cyberguru.ru/programming/...dia-page9.html
http://www.programmersforum.ru/showt...t=%D8%E5%EB%EB
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.
KobolD вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод Шелла <<оля>> Паскаль, Turbo Pascal, PascalABC.NET 1 14.11.2011 21:04
Задача Pascal (Сортировка метод Шелла) madmonk Помощь студентам 2 08.12.2009 17:37
Метод сортировки Шелла SVadiks Помощь студентам 2 03.11.2009 20:17
сортировка Шелла pilot76 Помощь студентам 2 17.08.2009 18:05