У меня тоже проблемы с этим методом, только задание другое:
Дана последовательность вещественных чисел, заданная в типизированном файле. Методом индуктивной функции вычислить среднюю длину связных подпоследовательностей отрицательных чисел.
Андрей, приветик, вот проверяй...а ты уверен, что функция NegChainL - индуктивная? У нас просто называют её рекурсивной...или я так поняла, это всё взаимосвязано? Ещё по заданию, эта подпрограмма должна написана в стиле защитного программирования, то есть должны быть предусмотрены всевозможные коды ошибок. Здесь я так понимаю, тоже это есть. Вот..мне ещё нужно описать необходимые типы данных и составить полную спецификацию, которая должна содержать задачу функции (самой подпрограммы)...входные, выходные данные..и вот те возможные значения функции, ей присваиваемые...Как это оформить..?
{функция NegChainL если значение считанного элемента отрицательно, значение функции увеличивается на 1 в противном случае обнуляется} function NegChainL:integer;:
var a:real; begin ReadLn(f,a); // чтение входных данных if EoF(f) or(a>0) then NegChainL:=0 else NegChainL:=NegChainL+1//если конец файла или //a>0 то значение функции=0, иначе значение функции+1; end;
begin Assign(f,'NegChain.dat');//связываемем имя файла с файловой переменной Reset(f); //готовим файл к чтению n:=0; //инициализируем переменные m:=0; repeat // (*) l:=NegChainL; //переменной l присваиваем значение функции if l>0 then begin //Если l>0 Inc(n); //счётчик цепочек+1 m:=m+l //счётчик орицательных элементов+! end until EoF(f); //если не конец файла, повторяем процесс (*) Close(f); //Закрываем файл //Вывод результата if n=0 then WriteLn('No negative chains found') else WriteLn('The average negative chain length is ',m/n:8:3); end.