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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2011, 21:25   #1
giv93
Пользователь
 
Регистрация: 09.10.2011
Сообщений: 13
По умолчанию Паскаль (массивы)

Изображения
Тип файла: jpg Лаб 3.jpg (55.1 Кб, 84 просмотров)
giv93 вне форума Ответить с цитированием
Старый 26.11.2011, 02:30   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Вот такой способ самый простой и самый неэффективный:
Код:
for i:=1 to n do for j:=1 to n do begin
  b[i,j]:= 0;
  for ii:=i to n do for jj:=1 to j do b[i,j]:= b[i,j]+a[ii,jj]
end;
Вот так будет поэффективнее, тут мы избавляемся от одного внутреннего цикла:
Код:
for i:=1 to n do
  for j:=n downto 1 do begin
    if i=1 then b[i,j]:= 0 else b[i,j]:= b[i-1,j];
    for jj:=j to n do b[i,j]:= b[i,j] + a[i,jj]
  end;
Можно и дальше оптимизировать. Придется ввести дополнительную переменную, но зато мы совсем избавимся от внутренних циклов. Примерно так:
Код:
for i:=1 to n do begin
  c:= 0;
  for j:=n downto 1 do begin
    с:= с + a[i,j]
    if i=1 then b[i,j]:= c else b[i,j]:= b[i-1,j] + c
  end;
Дальнейшая оптимизация тоже возможна, но вряд ли особо нужна..
Надеюсь, не наврал (не проверял).
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль, массивы bwitcher Помощь студентам 1 07.02.2011 17:17
Массивы Паскаль! Денис999 Помощь студентам 3 24.05.2010 19:39
массивы (паскаль) AndrewPl Помощь студентам 14 25.04.2010 17:06
Массивы-Паскаль Айдар Помощь студентам 7 23.11.2009 18:49
Паскаль. Массивы cucumber Помощь студентам 5 23.04.2009 21:20