Другие языки программирования и технологии

Срочно.Помогите пожалуйста написать программу на паскале.

Дан числовой ряд с общим членом: a_n=100-n!/( ∛n) , n=1,2,…
Найдите сумму членов последовательности больших нуля (использовать цикл с предусловием).
Мог ошибиться, поэтому проверь
uses crt;
function fact(n: integer): integer;
begin
if ((n=0) or (n=1)) then fact:=1 else fact:=fact(n-1)*n;
end;
var
s,a: real;
n: integer;
begin
clrscr;
n:=1;
s:=0;
while a>0 do begin
a:=(100-(fact(n)/(exp(ln(n)/3))));
s:=s+a;
inc(n);
a:=0;
end;
writeln(s:5:3);
readln;
end.
Александр Прутков
Александр Прутков
5 701
Лучший ответ
>> Нек Матросов: не совсем так. Ваш код добавит к сумме первый отрицательный элемент последовательности, т. к. , его знак проверяется лишь на следующей итерации цикла.
>> Цикл с предусловием в такой задаче вообще не применим, в связи с чем у меня возникают сомнения в компетентности учителя (скорее всего школьного) , который сформулировал задачу с этим требованием. Здесь циклу с постусловием самое место.
Вот мой вариант решения:
==========================================
PROGRAM sequence;

uses
Math;

var
i: Integer;
n: Integer;
n_fact: Integer;
a_n: Real;
a_n_sum: Real;

begin
{ вычисление первого элемента последовательности }
a_n := 100 - 1 / 1;

n := 1;
a_n_sum := 0;

{ цикл с предусловием }
while a_n > 0 do
begin
{ Пополенение суммы n-м членом }
a_n_sum := a_n_sum + a_n;

n := n + 1;

{ вычисление факториала (n+1) }
n_fact := 1;
for i := 2 to n do
n_fact := n_fact * i;

{ Нахождение (n+1)-го члена последовательности }
a_n := 100 - n_fact / Power(n, 1 / 3);
end;

WriteLn('Summ = ', a_n_sum:4:6);
ReadLn;

end.
==========================================
Вопросы? В ICQ: 228004347 или Агент.
Денис Труш
Денис Труш
7 465