Найти сумму квадратов натуральных чисел от 1 не превышающую заданное число W. Задачу...

0 голосов
103 просмотров

Найти сумму квадратов натуральных чисел от 1 не превышающую заданное число W. Задачу решить в двух вариантах: циклом с условием продолжения и циклом с условием завершения. ( Pascal ABC) Скриншот прилагается, вроде программу написал, но почему-то она не правильно работает.


image

Информатика (113 баллов) | 103 просмотров
0

какое число вводишь?

0

15

0

А можно пояснить, пожалуйста? Во-первых: почему k:=0 , если отсчет у нас от 1 члена ряда, во-вторых, я совершенно не могу понять последнюю запись условия

0

k := 0;REPEAT k := k + 1; y := k * k; sum := sum + y;UNTIL (sum+((k+1)*(k+1))) > W;

0

UNTIL (sum+((k+1)*(k+1))) > W;

0

сейчас

0

а понял

0

Так сумма квадратов 1240 превышает заданное число ( 15 )

0

так и есть

0

А выдает 1240

Дан 1 ответ
0 голосов

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


image
(5.6k баллов)
0

что не работает-то? Попробуйте для sum тип long integet

0

сейчас сяду наберу у себя

0

Выводит 1 теперь

0

меньше равно

0

<=

0

until sum <= w

0

Оно работает неправильно, но программа Paxicor выполняет все, как нужно. В моем же случае, вводя 15, выдает сумму 30

0

long integer

0

Внимательно прочитайте задание

0

Сосед, кстати, сделал то же самое, только для остановки цикла он сделал упреждающее условие. Т.е. вычисляется уже следующее значение sum, и если оно больше W, то печатается нынешнее sum