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

Помогите плз найти ошибку в задаче в паскале, есть код,что сделал

Вычислить сумму 70 слагаемых ряда, если n-ый член ряда задается выражением Cn=x^(2n)*(-1)^(n-1)*(2n-1)/(2n) для 4-ех значений переменной х: 0,2 0,4 0,6 0,8 Program tretya; Uses crt; Var i,n:integer; sum,x,C:real; Begin Clrscr; n:=70; write('vvedite chislo x='); readln(x); sum:=0; while x<=0.8 do Begin x:=x+0.2; readln(x); for n:=1 to 70 do Begin C:=sqr(x)*(-1)*(2*n+1)*2*n/((2*n-1)*(2*n+3)); readln(C); sum:=sum+C; end; end; writeln('sum=',sum:6:6); readln(sum); end.
ну для начала
C:=sqr(x)*(-1)*(2*n+1)*2*n/((2*n-1)*(2*n+3));
readln(C);

то есть ты считаешь число С. . а потом забиваешь на его значение. . и просишь ввести С с клавиатуры.. . как-то нелогично получается. . во вторых я не очень уверен что ты верно формулу воспроизвел. . кроме того не очень понятно находится ли (2n-1) в степени или -1 в степени на них умножается. . так как скобок нет то привожу второй вариант. . попробуй вот так
sum:=0;
for n:=1 to 70 do
Begin
y:=1;
z:=-1;
for i:=1 to n do y:=y*x;
if n mod 2 =1 then z:=1;
C:=sqr(x)*y*z*(2*n-1)/(2*n);
sum:=sum+C;
end;

и там где выводишь сумму -ее надо между 2 ендов поставить. . потому что она несколько раз выводиться должна

чем больше читаю. . тем больше ошибок замечаю :))) полный текст:

Program tretya;
Uses crt;
Var i,n,z:integer;
sum,C,x,y:real;
Begin
Clrscr;
n:=70;
x:=0.2;
while x<=0.8 do
Begin
sum:=0;
for n:=1 to 70 do
Begin
y:=1;
z:=-1;
for i:=1 to n do y:=y*x;
if n mod 2 =1 then z:=1;
C:=sqr(x)*y*z*(2*n-1)/(2*n);
sum:=sum+C;
end;
writeln('sum=',sum:6:6);
x:=x+0.2;
end;
readln;
end.
Max Moskvych
Max Moskvych
646
Лучший ответ
Зачем такие сложности? Зачем каждый раз находить х в степени, если видно, что у каждого следующего члена суммы степени будут отличаться на x^2. Для четырех значений х сами доделаете, я покажу как найти для одного

S := 0; {сумма}
y := Sqr(x); {квадрат х}
for i:=1 to n do begin
u := y * (1 - ((i - 1) and 1) shl 1) * (2 * i - 1) / (2 * i); {член ряда}
S := S + u; {накапливаем сумму}
y := y * Sqr(x); {следующее значение степени х}
end;

Вот и все, в S искомая сумма. С помощью такой штуки (1 - ((i - 1) and 1) shl 1) вычисляется (-1)^(i-1)
Первые две строчки в цикле можно объединить.

Остальное сами.
Cristiano Ronaldo
Cristiano Ronaldo
59 613
Хрень.
Проще выкинуть в мусор и переписать заново.
Ангелок М
Ангелок М
32 502