IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Функция
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


Описать рекурсивную функцию 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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

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

Где-то что-то не стыкуется. В частности, совершенно непонятно, зачем функции Min, которая должна находить минимум из элементов вещественного массива, три целочисленных параметра? Ты сначала функцию напиши, потом вызывать ее будешь.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


Изменил, добавил 2 параметры. также ошибка мутная какаята задача wacko.gif . что делать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


раз нельзя цикл - то рекурсия. Вроде это у тебя и сделано
Сделай функцию, которая принимает 3 параметра - сам массив, размер массива и номер элемента
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Начать решать заново.

Для начала - алгоритм. На словах. Что делаешь, если у тебя есть массив определенного размера, и тебе надо найти в нем минимум? Правильно. Если размер = 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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


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

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

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

уже начинал делать. код слишком большой получается
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
поясните пожалуста эту ситуацию.
Я ж выше словами написал то же самое. Что именно непонятно из этого кода?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

Группа: Пользователи
Сообщений: 51
Пол: Мужской
Реальное имя: Аблай

Репутация: -  0  +


а все ясно не внимательно я прочитал smile.gif . спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 23:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name