Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Алгоритмы _ Метод индуктивной функции

Автор: priboltik 28.02.2007 0:29

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


заранее благодарю..

Автор: Lapp 28.02.2007 6:17

Цитата(priboltik @ 27.02.2007 20:29) *

в чем заключается метод индуктивной функции...
Существует понятие индуктивной функции, но вот что такое "метод индуктивной функции" - это я не знаю. Может, имеется в виду "метод вычисления индуктивной функции"?
Цитата(priboltik @ 27.02.2007 20:29) *

а то в задали задачку делать.. а я даже понятия не имею, про что она...
Ты бы привел саму задачу - оно было бы яснее.. smile.gif

М
Тема переносится в Алгоритмы. Lapp



Автор: priboltik 28.02.2007 19:48

Цитата(Lapp @ 28.02.2007 2:17) *

Может, имеется в виду "метод вычисления индуктивной функции"?


да..наверное .. скорее всего..

вот полное задание:

Дана последовательность символов, заданная в типизированном файле. Методом индуктивной функции определить количество вхождений в последовательность цифры, которая встречается в после-довательности максимальное число раз.


Автор: Lapp 1.03.2007 8:03

Сильно понятнее не стало. Хотя немного все же есть smile.gif
Будем рассуждать так..

Функция "количество вхождений символа Х в строку" является индуктивной. Для вычисления индуктивных функций можно применять рекурсию. Напишем функцию для вычисления количества вхождений всех цифр в данную строку (с применением рекурсии), а по результатам ее работы узнаем, какое количество вхождений одного символа является максимальным.

function HowMany(x:char;s:string):integer;
begin
if s='' then HowMany:=0
else begin
if x=s[Length(s)] then t:=1 else t:=0;
HowMany:=t+HowMany(x,Copy(s,1,Length(s)-1))
end
end;

Теперь осталось организовать цикл по нахождению максимального количества вхождений цифр:
m:=0;
for i:=0 to 9 do begin
n:=HowMany(Chr(48+i),s);
if n>m then m:=n
end

Вот, примерно так. Конечно, рекурсия тут ни к чему абсолютно (только жрет память и время), но думаю, с тебя ее потребуют, потому что иначе присобачить индуктивные функции тут некуда.

Автор: priboltik 1.03.2007 23:38

ок.. спасибо. сегодня попробую зафигачить. good.gif

Автор: Olya 26.03.2007 16:54

blink.gif У меня тоже проблемы с этим методом, только задание другое:

Дана последовательность вещественных чисел, заданная в типизированном файле. Методом индуктивной функции вычислить среднюю длину связных подпоследовательностей отрицательных чисел.

Что здесь можно сделать? smile.gif
wacko.gif wacko.gif

Автор: Lapp 26.03.2007 17:15

Цитата(Olya @ 26.03.2007 12:54) *

Что здесь можно сделать? smile.gif

Можно создать отдельную тему.

М
Не задавай вопросы в чужих темах.


Автор: -Настя- 16.02.2011 23:11

А что, собственно, такое индуктивная функция? unsure.gif

Автор: Lapp 17.02.2011 8:32

Цитата(-Настя- @ 16.02.2011 19:11) *
А что, собственно, такое индуктивная функция? unsure.gif

Вот тут: http://forum.pascal.net.ru/index.php?showtopic=16407 есть пояснение. Грубо говоря, это функция, определенная на дискретном упорядоченном множестве, которую можно вычислить через значения в предыдущих точках.

Автор: EpicFail 20.03.2011 0:02

Цитата(-Настя- @ 16.02.2011 22:11) *

А что, собственно, такое индуктивная функция? unsure.gif

проще говоря,это функция,которая выполняется за один проход,без всякой рекурсии

Автор: -Lumka- 24.12.2012 21:59

Привет) можешь написать полную программу этой подпрограммы? пож-та

Автор: Bluebird 26.12.2012 18:31

n:=HowMany(Chr(48+i),s)

Что означает тут число 48 и почему оно такое