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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.05.2014, 15:22   #1
Тетрадь
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 37
По умолчанию Не работает программа, как исправить? паскаль

Рекурсия. Нужно найти наибольший элемент в массиве.
Код:
uses op,obrabotki;
var a:mas;
    n,i:integer;
    pr:integer;
begin
readln(n);
vvod(a);
pr:=max(a,w);
write('max=',Max(n));
end.
Код:
unit obrabotki;
interface
uses op;
function max(var a:mas; n:integer):integer;
procedure vvod (var a:mas; n:integer);
implementation

function max(var a:mas; n:integer):integer;
var
w:integer;
begin
     if n>1 then
            begin
            w:=max(n-1);
            if a[n]<w then max:=w
                      else max:a[n];
                      end
                      else max:=a[1];
                      end;
procedure vvod (var a:mas; n:integer);
var i:integer;
begin
randomize;
for i:=1 to n do
              begin
              a[i]:=random(20);
              end;
              end;
              end.
Код:
unit op;
interface
type mas=array[1..50] of integer;
var a:mas;
    n,i:integer;
implementation
end.
Может можно как-то более проще реализовать рекурсионный алгоритм
Тетрадь вне форума Ответить с цитированием
Старый 04.05.2014, 17:35   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Код:
                      else max:a[n];
Сначала исправить синтаксические ошибки.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 05.05.2014, 13:54   #3
Тетрадь
Пользователь
 
Регистрация: 03.11.2013
Сообщений: 37
По умолчанию

забыл исправить когда программу сюда заливал. Не работает, не могу разобраться как исправить

Последний раз редактировалось Тетрадь; 05.05.2014 в 14:24.
Тетрадь вне форума Ответить с цитированием
Старый 05.05.2014, 15:41   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы путаете (или не знаете, что это такое) формальные и фактические параметры.

пробуйте

Главная программа
Код:
uses op,obrabotki;
var a:mas;
    n:integer;
begin
  WriteLn('Введите размерность массива: ');
  readln(n);
  vvod(a, n);
  printArr(a, n);
  write('max=', max(a, n));
end.
op.pas
Код:
unit op;
interface
type mas=array[1..50] of integer;
implementation
end.

obrabotki.pas
Код:
unit obrabotki;
interface
uses op;

function max(var a:mas; n:integer):integer;
procedure vvod (var a:mas; n:integer);
procedure printArr (var a:mas; n:integer);

implementation

function max(var a:mas; n:integer):integer;
var
  w:integer;
begin
  if n=1 then max := a[1]
  else begin
     w:=max(a, n-1);
     if a[n]<w then max:=w
               else max:=a[n];
  end;
end;

procedure vvod (var a:mas; n:integer);
var i:integer;
begin
  randomize;
  for i:=1 to n do
        a[i]:=random(20);
end;

procedure printArr (var a:mas; n:integer);
var i:integer;
begin
  for i:=1 to n do begin
      Write(a[i]:2,' ');
  end;
  WriteLn;
end;

end.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите исправить ошибки в командной строке . программа не работает почему то((( Эльвира 4947 Операционные системы общие вопросы 0 17.12.2013 22:11
помогите исправить ошибки. программа не работает почему то Эльвира 4947 Помощь студентам 0 09.12.2013 16:54
Не работает функция click() в Opera, как исправить? Arassir JavaScript, Ajax 8 24.05.2012 16:34
Паскаль программа работает через раз malohacker Помощь студентам 2 05.01.2011 15:27
Конструкция case of работает некорректно! Как исправить? SkAndrew Общие вопросы Delphi 6 06.04.2008 00:21