Найти сумму квадратов натуральных чисел от 1 не превышающую заданное число W. Задачу решить в двух вариантах: циклом с условием продолжения и циклом с условием завершения. ( Pascal ABC) Скриншот прилагается, вроде программу написал, но почему-то она не правильно работает.
какое число вводишь?
15
А можно пояснить, пожалуйста? Во-первых: почему k:=0 , если отсчет у нас от 1 члена ряда, во-вторых, я совершенно не могу понять последнюю запись условия
k := 0;REPEAT k := k + 1; y := k * k; sum := sum + y;UNTIL (sum+((k+1)*(k+1))) > W;
UNTIL (sum+((k+1)*(k+1))) > W;
сейчас
а понял
Так сумма квадратов 1240 превышает заданное число ( 15 )
так и есть
А выдает 1240
Ваша программа отрабатывает все правильно. Цикл останавливается, когда sum становится больше заданного W. Выход вижу один: использовать еще одну переменную, которая будет запоминать предыдущее значение sum и печатать его в конце программы
что не работает-то? Попробуйте для sum тип long integet
сейчас сяду наберу у себя
Выводит 1 теперь
меньше равно
<=
until sum <= w
Оно работает неправильно, но программа Paxicor выполняет все, как нужно. В моем же случае, вводя 15, выдает сумму 30
long integer
Внимательно прочитайте задание
Сосед, кстати, сделал то же самое, только для остановки цикла он сделал упреждающее условие. Т.е. вычисляется уже следующее значение sum, и если оно больше W, то печатается нынешнее sum