подсчёт суммы

  • Автор темы vlastelin
  • Дата начала
V

vlastelin

#1
ммм... не знаю, не под одну категорию не подходило, поэтому сюда пишу

Помогите написать следующую прогу на Pascal'e через оператор For.
Делал через while, ему не понравилось... а через for не могу понять как сделать

вообщем суть проги в следующем
есть ряд 1+3+5+7...+n
в цикле должен быть этот ряд

а в итоге (т.е. при задание значения n=11 гденить, пусть даже ввод с клавиатуры) мы должны сосчитать вот это:
1+3+5+...+11

вообще там задание через функцию сделать и т.д., но в функцию я запихну, мне главное понять как сделать вот выше сказанное
 

Vadik(R)

Well-known member
12.12.2007
469
0
#2
Если еще актуально, то стучи в асю 34-98-34-73, сделаю за WMR ;)
 
V

vlastelin

#3
да я сам могу написать, главное подскажите как цикл тот сделать
 

V88

Well-known member
22.10.2008
51
0
#4
Можно сделать вот так:
s:=0;
i:=1;
while i<>n do begin
s:=s+i;
i:=i+2;
end;
где n можно вводить программно или с клавиатуры.
 
V

vlastelin

#5
ну я же сказал что знаю как через while, мне через for надо =(
 
E
#6
Закинте все енто в массив а потом по нем и фором не проблема.
 

V88

Well-known member
22.10.2008
51
0
#7
Можно и сделать без использования массива. Вот так:
s:=0;
j:=1;
for i:=1 to Round(n/2) do begin
s:=s+j;
j:=j+2;
end;
где n - это либо 1, 3, 5 ...
 

V88

Well-known member
22.10.2008
51
0
#10
Round() - это функция, берущая целую часть числа в большую сторону, т.е, напр., если round(2.3) = 2, round(2.8) = 3, round(2.5) = 3. Иными словами она округляет вещественное число.
А есть ещё функция Trunc(), которая возвращает целочисленную часть числа с плавающей запятой, т.е. опять же trunc(2.3) = 2, trunc(2.8) = 2, trunc(2.5) = 2
 
B

BurcevD

#11
можно еще двумя способами:
Код:
s:=0;
For i:=1 to n div 2 do
s:=s+(i*2-1);
Writeln(S);
или так

Код:
 s:=0;
For i:=1 to n do 
if (i mod 2=1) then s:=s+i;
Writeln(s);