ОБСУЖДЕНИЕ

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

11 ответов 6,3 тыс.
AI-выжимка обсуждения скоро

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

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

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

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

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

вообще там задание через функцию сделать и т.д., но в функцию я запихну, мне главное понять как сделать вот выше сказанное
 
Если еще актуально, то стучи в асю 34-98-34-73, сделаю за WMR ;)
 
да я сам могу написать, главное подскажите как цикл тот сделать
 
Можно сделать вот так:
s:=0;
i:=1;
while i<>n do begin
s:=s+i;
i:=i+2;
end;
где n можно вводить программно или с клавиатуры.
 
ну я же сказал что знаю как через while, мне через for надо =(
 
Закинте все енто в массив а потом по нем и фором не проблема.
 
Можно и сделать без использования массива. Вот так:
s:=0;
j:=1;
for i:=1 to Round(n/2) do begin
s:=s+j;
j:=j+2;
end;
где n - это либо 1, 3, 5 ...
 
а Round - это что такое? =)
 
Об том знает великий эфадын!
 
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
 
можно еще двумя способами:
Код:
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);
 
спасибо всем! =)