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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2012, 19:37   #1
GoldSieg
Пользователь
 
Регистрация: 02.10.2011
Сообщений: 45
По умолчанию Оптимизация программы

Здравствуйте
мне нужно оптимизировать программу.
Код:
uses
  crt;

type
  Mas = array[1..100] of integer;

function Sum(k: byte; x: Mas): integer;
begin
  if k = 0 then Sum := 0 else Sum := x[k] + Sum(k - 1, x)
  
end;
var
  a: Mas;
  i, n, m: Byte;

begin
  clrscr;
  randomize;
  write('Количество элементов массива n=');
  readln(n);
  for i := 1 to n do
  begin
    a[i] := Random(20);
    write(a[i], ' ');
  end;
  writeln;
  write('Сумма=', Sum(n, a));
  readln
end.
интересны ваши предложения.
GoldSieg вне форума Ответить с цитированием
Старый 21.05.2012, 19:47   #2
Leshii
Форумчанин
 
Регистрация: 26.07.2011
Сообщений: 376
По умолчанию

Поведайте ещё суть программы, и тогда наверное можна подумать
Люблю на ты.Я человек простой
Leshii вне форума Ответить с цитированием
Старый 21.05.2012, 19:57   #3
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вычислять сумму без рекурсии простым циклом.
s-andriano вне форума Ответить с цитированием
Старый 21.05.2012, 20:06   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,543
По умолчанию

Мой вариант оптимизации:
Код:
var
  a, Sum: Integer;
  i, n: Byte;

begin
  randomize;
  write('Количество элементов массива n=');
  readln(n);
  Sum := 0;
  for i := 1 to n do
  begin
    a := Random(20);
    write(a, ' ');
    Inc (Sum, a);
  end;
  writeln;
  write('Сумма=', Sum);
  readln
end.
Arigato вне форума Ответить с цитированием
Старый 21.05.2012, 20:18   #5
GoldSieg
Пользователь
 
Регистрация: 02.10.2011
Сообщений: 45
По умолчанию

нужно написать программу которая будет выводить сумму числового ряда. функция должна быть рекурсивной.

Последний раз редактировалось GoldSieg; 21.05.2012 в 20:45.
GoldSieg вне форума Ответить с цитированием
Старый 21.05.2012, 22:35   #6
GoldSieg
Пользователь
 
Регистрация: 02.10.2011
Сообщений: 45
По умолчанию

Че больше предложений нет?
GoldSieg вне форума Ответить с цитированием
Старый 21.05.2012, 22:48   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,543
По умолчанию

Ну а чем вас ваше решение не устраивает?
Arigato вне форума Ответить с цитированием
Старый 21.05.2012, 23:31   #8
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

опять же, каков критерий оптимизации?
s-andriano вне форума Ответить с цитированием
Старый 22.05.2012, 00:04   #9
GoldSieg
Пользователь
 
Регистрация: 02.10.2011
Сообщений: 45
По умолчанию

Ну а чем вас ваше решение не устраивает?

Понимаете. меня оно устраивает. оно не устраивает моего преподавателя...
на счет критерия.. а как можно сделать так чтоб функция не держала в памяти весь массив.?
GoldSieg вне форума Ответить с цитированием
Старый 22.05.2012, 00:18   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Код:
uses
  crt;

function Sum(k: integer): longint;
var
  a: integer;
begin
  if k = 0 then
  begin
    sum := 0;
    exit;
  end;
  a := Random(20);
  write(a, ' ');
  Sum := a + Sum(k - 1);  
end;

var
  n: integer;

begin
  clrscr;
  randomize;
  write('Количество элементов массива n=');
  readln(n);
  write('Сумма=', Sum(n));
  readln
end.
Но нужно учитывать, что на стеке вызовов все равно будут храниться временные переменные.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
оптимизация программы Arsenx777 Работа с сетью в Delphi 1 28.08.2011 14:00
Оптимизация программы 0479 Помощь студентам 7 09.03.2011 17:15
Оптимизация программы Lenya Помощь студентам 2 05.01.2011 18:56
Оптимизация программы!!! $T@LKER Общие вопросы Delphi 10 08.08.2010 21:23