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

Вопрос по паскалю!!! Срочно надо, плиз!!!

помогите написать программу нахождения суммы чисел бесконечного ряда s=1-2+3-4+5-...n-слагаемых
program snaga;
uses crt;
var
summa, i : integer;
begin
Readln('Введите количество слогаемых',n);
For i:=1 to n do begin
If mod(i/2)=0 then summa:=summa-i
else summa:=summa+i
// если нечетное то вычитаем если четное прибовляем
end;
Writeln(суммы чисел бесконечного ряда s=1-2+3-4+5-...n-слагаемых',summa);
end.
VP
Vecni Piyanam Heyata Ziyanam
3 323
Лучший ответ
Sipehr Sultoni Этот код не должен компилироваться из-за строчки

If mod(i/2)=0 then summa:=summa-i

Правильно так

If i mod 2 = 0 then summa:=summa-i
А если n будет равно миллиону или того лучше миллиарду. Что столько итераций делать будем? Иногда надо не хвататься суммировать, а сначала на циферки посмотреть.

Подсказка: найдите суммы пар слагаемых, подумайте и придете к такому решению.

program abc_new;
var z,n:integer;
begin
readln(n);
if n mod 2 = 0 then z := - n div 2 else z := n div 2 + 1;
writeln(z);
end.

Сравните с результатом, выдаваемым весией Igor B и вы получите полное совпадение. Вот только работать этот код будет не в пример быстрее. :-)

Но как только будет указано конкретное n, сразу же станет бессмысленной фраза в условии о бесконечности. Так что условие действительно не корректно и в этом я согласен с apprico.
SS
Sipehr Sultoni
59 613
вы точнее задание ставте. если ряд - бесконечен, то и n - стремиться к бесконечности. Ряд у вас - расходящийся. Найти его значение в вашей формулировке - не возможно .
Gio Ooo
Gio Ooo
8 642
Сергей Быков если не знаешь-не пиши!!!
program abc;
var s1,s2,z,i,n:integer;
begin
readln(n);
for i:=1 to n do
begin
if (i mod 2)=0 then
s1:=s1-i;
else
s2:=s2+i;
end;
z:=s1+s2;
writeln(z);
end.
Вроде так с тебя 10 баллов !!!