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

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

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


image

Информатика Начинающий (113 баллов)
оставил комментарий Отличник (9.4k баллов)

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

оставил комментарий Начинающий (113 баллов)

15

оставил комментарий Начинающий (113 баллов)

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

оставил комментарий Отличник (9.4k баллов)

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

оставил комментарий Отличник (9.4k баллов)

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

оставил комментарий Отличник (9.4k баллов)

сейчас

оставил комментарий Отличник (9.4k баллов)

а понял

оставил комментарий Начинающий (113 баллов)

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

оставил комментарий Отличник (9.4k баллов)

так и есть

оставил комментарий Начинающий (113 баллов)

А выдает 1240

Дан 1 ответ
0 голосов
Отличник (5.6k баллов)

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


image
оставил комментарий Отличник (5.6k баллов)

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

оставил комментарий Отличник (5.6k баллов)

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

оставил комментарий Начинающий (113 баллов)

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

оставил комментарий Отличник (5.6k баллов)

меньше равно

оставил комментарий Отличник (5.6k баллов)

<=

оставил комментарий Отличник (5.6k баллов)

until sum <= w

оставил комментарий Начинающий (113 баллов)

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

оставил комментарий Отличник (5.6k баллов)

long integer

оставил комментарий Начинающий (113 баллов)

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

оставил комментарий Отличник (5.6k баллов)

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

...