Другие языки программирования и технологии
Помогите плз найти ошибку в задаче в паскале, есть код,что сделал
Вычислить сумму 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.
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.
Зачем такие сложности? Зачем каждый раз находить х в степени, если видно, что у каждого следующего члена суммы степени будут отличаться на 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)
Первые две строчки в цикле можно объединить.
Остальное сами.
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)
Первые две строчки в цикле можно объединить.
Остальное сами.
Хрень.
Проще выкинуть в мусор и переписать заново.
Проще выкинуть в мусор и переписать заново.
Похожие вопросы
- помогите найти ошибку в задаче по паскалю
- Помогите пожалуйста найти ошибку в задаче (Язык программирования Си)
- Pascal помогите пожалуйста найти ошибку в задаче.
- Помогите найти ошибку в задачи,Паскаль...
- Помогите пожалуйста найти ошибку в решении задачи по информатике(паскаль) !!!Прошу очень нужно!!!задача простая!!!
- Помогите с программой, пожалуйста! (Pascal) Или подскажите, где можно найти различные решения задач на Паскале?
- Здравствуйте всем! Помогите пожалуйста найти ошибку в моем коде
- Помогите пожалуйста найти ошибку. Паскаль. Оператор Case of
- Найдите ошибку в задаче по ТР
- Помогите, пожалуйста, с информатикой. 10 класс. Надо найти ошибку в программе. Язык паскаль