Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помощь в написание программы в паскале

erofey sasin Ученик (213), закрыт 4 месяца назад
Написать программу, которая вычисляет сумму натуральных до n числа. Число N вводится с клавиатуры и находится в пределах от 100 до 10000
Лучший ответ
Victor Surozhtsev Просветленный (34152) 4 года назад
{ Сумма натуральных чисел до числа n включительно, если нужно просто до числа n (n>1), не включая само это число, то в цикле for надо будет исправить for i:=1 to n на for i:=1 to n-1, FreePascal: }

Var i,n:integer; s:longint; begin while true do begin write('n = '); readln(n); for i:=1 to n do s:=s+i; writeln(s) end end.

{ Тут главное с типами не запутаться, а то объявишь сумму s типом integer, введёшь n=10000 и получишь в ответе белиберду, потому что сумма ни в целочисленный тип integer, ни в другой целочисленный тип word просто не впишется - по формуле, которую тебе показал Жираф, получится 50005000, что превышает максимальные значения для этих типов. A зачем тут нужен цикл for, если есть такая замечательная формула? Чисто с дидактическими целями - надо сразу уметь пользоваться циклическими, рекурсивными и итерационными алгоритмами, а не чураться их, как чёрт ладана, а иначе цикл for тут, естественно, не нужен! Вот таким образом дальше руку и набивай... }
Остальные ответы
Полосатый жираф Алик Искусственный Интеллект (312987) 4 года назад
=n*(n+1)/2

И всё...
erofey sasinУченик (213) 4 года назад
Ответ конечно религиозный, но можно полностью расписать ?
Полосатый жираф Алик Искусственный Интеллект (312987) Читай "Сумма арифметической прогрессии"...
bruh of the Opera Профи (517) 4 года назад
если n - четное, то (n+1) * n/2
если n - нечетное, то (n+1) * n/2 + (n/2 + 1)
АндрейВысший разум (425151) 4 года назад
Бред сивой кобылы. Открываешь школьный учебник алгебры и читаешь раздел "арифметическая прогрессия".
bruh of the Opera Профи (517) Андрей, можно и через сумму арифметической прогрессии с разностью 1, но мой способ также рабочий. Проверено задачей 859 на acmp.ru
АндрейВысший разум (425151) 4 года назад
n = 3, сумма равна 6.

(n+1) * n/2 = (3+1)*3/2=4*3/2=12/2=6 - правильный ответ

(n+1) * n/2 + (n/2 + 1) = (3+1)*3/2+(3/2+1) = 6+2 = 8 - ошибочный ответ. Если же деление вещественное, то получим вообще 8.5

Обращаю внимание, что * и / имеют РАВНЫЙ приоритет и потому выполняются строго слева направо.
bruh of the Opera Профи (517) Андрей, ну ок, n = 3 тогда: (3 + 1) * 3/2 + (3/2 + 1) = 4 * 1 + (1+1) = 4 + 2 = 6 все верно.
Руслан Скрипник Ученик (122) 4 года назад
Кроме формулы суммы арефм. прогрессии можно создать переменную для суммы и цикл, который будет добавлять все натуральные числа до N в эту самую переменную
n = int(input('Введите максимальное число: '))
s = 0

for i in range(1, n):
----s += i

(Пример создан на языке python)
Похожие вопросы