
08.12.2007, 11:39
|
Активный
|
|
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
|
|
Код:
program SqSum_01;
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
var
X_ARG: Double;
//------------------------------------------------------------------------------
// Функция вычисляет значение факториала N
//------------------------------------------------------------------------------
function Factorial(N: Integer): Cardinal;
begin
if N = 1 then Result := 1
else Result := Factorial(N - 1) * N;
end;
//------------------------------------------------------------------------------
// Функция вычисляет значение очередного члена ряда с номером N
//------------------------------------------------------------------------------
function SqTerm(N: Integer; X: Double): Double;
begin
Result := Power(-1, N) * Power(X, 2 * N) / Factorial(2 * N);
end;
//------------------------------------------------------------------------------
// Функция вычисляет сумму членов последовательности,
// удовлетворяющих условию задачи
//------------------------------------------------------------------------------
function SumTerms(N: Integer; E: Double): Double;
var
Term: Double;
begin
Result := 0.0; // Сюда будем суммировать
while N > 0 do begin
Term := SqTerm(N, X_ARG); // Вычисляем очередной член ряда
if Abs(Term) >= E then // Проверяем условие
Result := Result + Term; // Если модуль больше либо равен E - суммируем
Dec(N); // Переходим к следующему члену ряда
end;
end;
begin
Write('X: ');
Readln(X_ARG);
Writeln;
Writeln('X = ', X_ARG:6:2);
Writeln('E = 2, N = 10: ', SumTerms(10, 2):10:2);
Writeln('E = 1, N = 10: ', SumTerms(10, 1):10:2);
Writeln('E = 0, N = 10: ', SumTerms(10, 0):10:2);
{ Чтобы пользователь смог насладиться результатом, ожидаем нажатия Enter}
Writeln;
Writeln('Press [Enter].');
Readln;
end.
|