Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Составление цикла

Автор: Serlos 26.12.2007 23:07

который чос решаю но никак не выходит
Задачка такая
вычислить сумму s=1/3+1/(3+2)+1/(3^2+2)+1/(3^3+2)+..+1/(3^10+2)
используя for и оператор go to
вот пробывал но невыходит

Program dgfsd;
Var
S:real;
p,i:integer;
begin
p:=0;
s:=0;
for i:=1 to 10 do
begin
p:=p+i;
s:=s+1/(p+2);
end;
writeln('s=',s:8:2);
readln;
end.
.

Автор: andriano 26.12.2007 23:20

А почему p:=p+i ?
Формулу можно записать так:
s := sum(1/(p^i+2)) | i := 0 to 10
откуда

begin
p:=1;
s:=0;
for i:=0 to 10 do
begin
s:=s+1/(p+2);
p:=p*3;
end;

Автор: Serlos 26.12.2007 23:40

опять же невыходит

Program dgfsd;
function sum(p,i:integer): integer;
Var
S:real;
begin
p:=3;
s:=0;
for i:=0 to 10 do
begin
s:=sum(1/(p^i+2));
end;
writeln('s=',s:8:2);
readln;
end.

Автор: ATAMAH 27.12.2007 2:29

А зачем ты тут пишешь функцию? Если надо то ошибка сразу во второй строке функция пишется не так!

Автор: volvo 27.12.2007 2:36

ATAMAH, если что - функция описана совершенно правильно, так что читать азбуку срочно... Ошибка будет потом, гораздо ниже второй строки.

Автор: andriano 27.12.2007 3:44

Serlos, может, я был неправильно понят: на паскале написано только то, что помещено в теги. Остальное - псевдокод (Сообщение #2).

Автор: Feagor 27.12.2007 22:25

не пойму в чем проблема?


uses crt;
const n=10;
var sum:real;
i:integer;

begin
clrscr;
sum:=1/3;
for i:=1 to n do sum:=sum+(1/(exp(i*ln(3))+2));
writeln(sum:2:4);
readkey;
end.


а если так уж и хочется через функцию, то:
uses crt;
const n=10;
var s:real;
i:integer;
function sum(p:integer):real;
begin
sum:=1/(exp(p*ln(3))+2);
end;
begin
clrscr;
i:=0;
s:=1/3;
for i:=1 to n do s:=s+sum(i);
writeln(s);
readkey;
end.


Честно говоря, сложилось такое мнение что автор второй или 3 раз паскаль видит lol.gif. Только без обид cool.gif