Определить, принадлежит ли член последовательности к заданному интервалу - Turbo Pascal
Формулировка задачи:
Пусть x[0]=a; x[k]=q*x[k-1]+b (k=1, 2, …,n). Даны натуральное n, действительные a, b, c, d, q (c<d). Принадлежит ли x[k] интервалу (c, d)?
Решение задачи: «Определить, принадлежит ли член последовательности к заданному интервалу»
textual
Листинг программы
// Перед вами - WEB-среда разработки PascalABC.NET. // Она основана на современном языке PascalABC.NET, совместимом с Delphi Object Pascal. // Программа запускается на сервере, ввод-вывод передается по сети. // Программу можно опубликовать и ссылаться на нее в Интернете в виде // [url]http://pascalabc.net/WDE/?file=имя_опубликованного_файла.pas[/url] // Зарегистрированные пользователи получают дополнительные возможности: // долговременное хранение своих программ, возможность работы с папками var i,n: Integer; a,b,c,d,q, tmp: Double; function x( k: Integer ): double; begin if ( k = 0 ) then x:= 0 else x := q * x( k-1 ) + b; end; begin repeat Writeln( 'Read: a, b, c, d, q, n' ); Readln( a,b,c,d,q, n ); until( c < d ); for i:=1 to n do begin tmp := x(i); if (tmp >= c) AND (tmp <= d) then writeln( i ); end; end.
Объяснение кода листинга программы
Этот код написан на языке Turbo Pascal и выполняет следующие действия:
- Объявляет переменные
i,n,a,b,c,d,qиtmp, которые будут использоваться в функцииx. - Определяет функцию
x, которая принимает один аргументkтипаInteger. Внутри функции проверяется, равно лиkнулю, и если да, то возвращается значение0. В противном случае, функция вызывает саму себя с аргументомk-1и умножает результат наq, а затем прибавляет к нему значениеb. - В цикле
repeat-untilсчитываются значенияa,b,c,dиqс консоли, а переменнаяnустанавливается равной значению, введенному пользователем. - В цикле
forперебираются значенияiот 1 доn. Для каждого значенияiвызывается функцияx(i), и если результатx(i)находится в интервале отcдоd, то значениеiвыводится на консоль. - Программа завершается.