Помощь - Поиск - Пользователи - Календарь
Полная версия: Функция
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Credo
Описать рекурсивную функцию MinRec(A,N) вещества типа,которая находит минимальный элемент вещестного массива A размера N,не используя оператор цикла .С помощью функции MinRec найти минимальные элемента массивов A,B,C размера NA,NB,NC соответсвенно!!

Помогите пожалуста. непонятные ошибки...

type mas=array[1..50] of integer;
var x,y,z:mas;
n,i,k,l:integer;

function Min(n,k,l:integer):integer;
var w:integer;
begin
if n>1 then
begin
w:=Min(n-1);
if x[n]>w then Min:=w
else Min:=x[n]
end
else Min:=x[1]
end;

begin
if k>1 then
begin
w:=Min(k-1);
if y[k]>w then Min:=w
else Min:=y[k]
end
else Min:=y[1]
end;

begin
if l>1 then
begin
w:=Min(l-1);
if z[l]>w then Min:=w
else Min:=z[l]
end
else Min:=z[1]
end;

begin
clrscr;
randomize;
write('Razmer massiva X n='); readln(n);
write('Razmer masiva X k='); readln(k);
write('Razmer masiva X l='); readln(l);
writeln('Massiv X: '); writeln('Massiva Y: '); writeln('Massiv Z: ');
for i:=1 to n do
begin
x[i]:=random(20);
y[i]:=random(20);
z[i]:=random(20);
write(x[i],' ', y[i] , ' ' , z[i] , ' ');
end;
writeln;
write('min=',Min(n));
write('min=',Min(k));
write('min=',Min(l));
readln
end.

volvo
Цитата
непонятные ошибки...
Чего непонятного? Все как раз понятно:
Цитата
function Min(n,k,l:integer):integer;
Сколько параметров функция принимает? Три?

Цитата
 begin
w:=Min(n-1);
Сколько параметров передается в функцию? Один? Читай выше. Должно передаваться три.

Где-то что-то не стыкуется. В частности, совершенно непонятно, зачем функции Min, которая должна находить минимум из элементов вещественного массива, три целочисленных параметра? Ты сначала функцию напиши, потом вызывать ее будешь.
Credo
Изменил, добавил 2 параметры. также ошибка мутная какаята задача wacko.gif . что делать?
Client
раз нельзя цикл - то рекурсия. Вроде это у тебя и сделано
Сделай функцию, которая принимает 3 параметра - сам массив, размер массива и номер элемента
volvo
Начать решать заново.

Для начала - алгоритм. На словах. Что делаешь, если у тебя есть массив определенного размера, и тебе надо найти в нем минимум? Правильно. Если размер = 1, то минимум очевиден: это и есть тот единственный элемент. Если элементов больше 1 - то надо найти наименьшее из двух: последний элемент массива и минимум всех предыдущих:

function min(a, b: real): real;
begin
if a < b then min := a else min := b;
end;

function minrec(const arr: array of real;
size: integer): real;
begin
if size = 1 then minrec := arr[0]
else minrec := min(arr[size - 1], minrec(arr, size - 1));
end;

Все просто...

Вызывать - так:
type
mas=array[1..5] of real;
const
a1: mas = (4, 3, 9, -12, 5);

begin
writeln(minrec(a1, 5):5 :2);
end.
Credo
smile.gif Спасибо оказывается совсем просто... получилось
Цитата
begin
if size = 1 then minrec := arr[0]
else minrec := min(arr[size - 1], minrec(arr, size - 1));
end;

поясните пожалуста эту ситуацию.

Добавлено через 1 мин.
Цитата
Сделай функцию, которая принимает 3 параметра - сам массив, размер массива и номер элемента

уже начинал делать. код слишком большой получается
volvo
Цитата
поясните пожалуста эту ситуацию.
Я ж выше словами написал то же самое. Что именно непонятно из этого кода?
Credo
а все ясно не внимательно я прочитал smile.gif . спасибо
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.