Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 28.02.2017, 20:53   #1 (permalink)
avatar76
Новичок
 
Регистрация: 27.02.2017
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Максимальный элемент массива, рекурсия

Решить задачу с применением рекурсии и без неё
Найти максимальный элемент в массиве a[1...n], используя соотношение max (a[1...n])=max (max (a[1...n-1]), an)

Вот через функции , а нужно ещё составить через процедуры и объединить в одну программу

PHP код:
type mas=array[1..50]of integer;  
var 
a:mas;  
n,i:integer;  
function 
Max(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;  
begin  
randomize
;  
write('Razmer massiva A n=');  
readln(n);  
writeln('Massiv A:');  
for 
i:=1 to n do  
begin  
a
[i]:=random(20);  
write(a[i],' ');  
end;  
writeln;  
write('max=',Max(n));  
readln  
end

avatar76 вне форума   Ответить с цитированием

Старый 28.02.2017, 20:53
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Пока вам что то советуют, могу предложить обратить внимание на эти ссылки

Если максимальный элемент квадратной матрицы находится выше главной диагонали...
Максимальный апгрейд компа
Не понимаю как, в Паскале найти второй нечетный элемент двумерного массива

Старый 01.03.2017, 11:42   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от avatar76 Посмотреть сообщение
Вот через функции , а нужно ещё составить через процедуры и объединить в одну программу
Да пожалуйста. Заодно "причесал" малость:
Код:
Const
 Nmax=50;

Type
 mas=array[1..Nmax] of integer;

Var
 a:mas;
 n,i,Maxim:integer;

function Max(Am:mas; nm:integer):integer;
var w:integer;
begin
 if nm>1 then
  begin
   w:=Max(Am,nm-1);
   if Am[nm]<w then Max:=w else Max:=Am[nm];
  end
 else Max:=Am[1]
end;

Procedure MaxP(Am:mas; nm:integer; var Mmxx:integer);
var w:integer;
begin
 if nm>1 then
  begin
   MaxP(Am,nm-1,w);
   if Am[nm]<w then Mmxx:=w else Mmxx:=Am[nm];
  end
 else Mmxx:=Am[1]
end;

Begin
 Randomize;
 repeat
  write('Razmer massiva A n = ');
  readln(n);
  if n>Nmax then writeln('Wrong: n must be < ',Nmax+1);
 until n<=Nmax;
 writeln('Massiv A:');
 for i:=1 to n do
  begin
   a[i]:=random(20);
   write(a[i]:4);
  end;
 writeln;
 writeln(' Function: max = ',Max(a,n));
 MaxP(a,n,Maxim);
 writeln('Procedure: max = ',Maxim);
 readln
End.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:13.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.