Напишите короткую программу в СНОБОЛЕ, которая вычисляет сумму всех четных чисел от 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(цикл); выход = м; конец

Другие вопросы по тегам