Напишите короткую программу в СНОБОЛЕ, которая вычисляет сумму всех четных чисел от 1 до 100
Вы должны использовать цикл для нескольких итераций сложения. GOTO заявление и метки могут быть использованы для разработки цикла вашего требования. Пожалуйста, дайте мне несколько идей.
2 ответа
Я думаю, что это не совсем Snobol, если в нем нет совпадения шаблонов...
Это решение генерирует четные числа 000 .. 100
сопоставляя образец со строкой "01012345678902468"
и добавление сгенерированных чисел через функцию add()
, Цикл осуществляется через FAIL
ключевое слово в конце шаблона, которое заставляет сканирование шаблона продолжать поиск альтернатив до выражения (*EQ(h t o,100) ABORT)
вызывает сканирование, чтобы прервать.
&FULLSCAN = 1
DEFINE('add(x)') :(add.End);add sum = sum + x :(RETURN);add.End
"01012345678902468" (LEN(1) $ h *LEN(1 - h)) ARB (LEN(1) $ t
. *LEN(9 - t)) ARB LEN(1) $ o *add(h t o)
. (*EQ(h t o,100) ABORT) FAIL
OUTPUT = sum
END
Работает как в Сноболе, так и в Спитболе (&FULLSCAN = 1
нужен для снобола, в спитболе нет ноута)
* Это работает на Spitbol версии Snobol.
цикл m = le(n, 98) (n = n + 2) + m:s(цикл); выход = м; конец