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

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

Форум «Всё о Паскале» _ Задачи _ Ещё задачка

Автор: StudentTNGU 4.12.2006 13:19

Наконец-то все решил. Почти.. Вот осталась эта задачка. Я пытался делать по примеру, но в примере тока плюсы и там проще.. А в задании сложнее. Че то я немного не понял... Поскажите как?
Вычислить сумму первых n членов ряда 1 - 1/1 + 1/3 - 1/5 +...
Help me please..

Автор: Гость 4.12.2006 13:20

Извините за такую наглость smile.gif)

Автор: volvo 4.12.2006 18:48

StudentTNGU, это - знакопеременный ряд... Так что, придется хранить знак очередного элемента...

s := 1; sign := -1;
for i := 0 to n - 1 do
s := s + (sign / (2 * i + 1));
sign := - sign;
end;

Автор: StudentTNGU 4.12.2006 19:36

Цитата(volvo @ 4.12.2006 14:48) *

s := 1; sign := -1;
for i := 0 to n - 1 do
s := s + (sign / (2 * i + 1));
sign := - sign;
end;


volvo спасибо. А s и sign объявлять как Integer? или Real?

Автор: volvo 4.12.2006 19:44

S само собой - вещественного, ибо есть деление, а Sign достаточно чтобы был Integer... Хотя нет, даже ShortInt подойдет (один байт экономия) smile.gif

Автор: StudentTNGU 4.12.2006 20:04


Program summa_n;
Var i, n, sign: Integer;
s: Real;
Begin
s:=1; sign:=-1;
for i:=0 to n-1 do
begin
s:= s + (sign/(2*i+1));
sign:=-sign;
end;
Writeln('Summa elementov ryada ravna: ',s);
Readln;
end.


вот. Надеюсь все верно? а то что он выдает 1.000000000000E+00 это нормально? так и должно быть?

Автор: klem4 4.12.2006 20:07

Цитата
Надеюсь все верно?


А n-то у тебя чему равно ?

Цитата
а то что он выдает 1.000000000000E+00 это нормально?


Это нормально smile.gif В экспоненциальной форме просто, поставь

Writeln('Summa elementov ryada ravna: ',s:5:3);

Автор: Гость 4.12.2006 20:17

Цитата(klem4 @ 4.12.2006 16:07) *

А n-то у тебя чему равно ?

не знаю.... а чему оно должно быть равно?

Автор: StudentTNGU 4.12.2006 20:21


Program summa_n;
Var i, n, sign: Integer;
s: Real;
Begin
Writeln('Vvedite kol-vo elementov ryada');
Readln(n);
s:=1; sign:=-1;
for i:=0 to n-1 do
begin
s:= s + (sign/(2*i+1));
sign:=-sign;
end;
Writeln('Summa elementov ryada ravna: ',s:5:3);
Readln;
end.


Вот! Сделал как в примере. Работает. Вроде правильно?

Автор: Гость 4.12.2006 20:31


Program summa_n;
Var i, n, sign: Integer;
s: Real;
Begin
Writeln('Vvedite kol-vo elementov ryada');
Readln(n);
s:=1; sign:=-1;
for i:=0 to n-1 do
begin
s:= s + (sign/(2*i+1));
sign:=-sign;
end;
Writeln('Summa elementov ryada ravna: ',s:5:3);
Readln;
end.


Это точно решение этой задачи Вычислить сумму первых n членов ряда 1 - 1/1 + 1/3 - 1/5 +... ???

Автор: volvo 4.12.2006 21:58

Ну, давай еще раз 15 переспросим dry.gif
А это ТОЧНО то, что тебе нужно? Может у тебя задание другое, и ты его неправильно прочел?

Автор: StudentTNGU 4.12.2006 22:31

Понятно... smile.gif Я на другом форуме по турбо паскалю тоже попросил помочь с этой задачкой. Там мне написали код. Вот он:


for i:=1 to n do
begin
if i mod 2 =0
then buf:=-1/i
else buf:=1/i;
summ:=summ+buf;
end;

buf, summ: real;
i: word;


Он совсем другой и результаты работы получаются разные... Кому верить? Как правильно?

Автор: klem4 4.12.2006 22:38

А провести ручной расчет и убедиться что на другом форуме тебя обманули не судьба ?

Пуск -> Программы -> Стандартные -> Калькулятор

удачи.

Автор: мисс_граффити 5.12.2006 0:05

или головой подумать, что в задании про четные знаменатели вообще ни слова нет....