Некорректно работает программа - Turbo Pascal
Формулировка задачи:
Есть программа с использованием множеств. Задание: напечатайте все целые числа, лежащие в диапазоне от 5 до 100, которые представимы в виде 5n+7m, где n и m – целые числа (m, n >=0). Код есть, программа работает, но выводит дублированные значения. Такого быть не должно. Как можно исхитриться со множеством ещё, чтобы программа выполняла свою работу как надо?
Решение задачи: «Некорректно работает программа»
textual
Листинг программы
uses crt; var m,n,a:integer; dig:set of 5..100; begin clrscr;//раз уж Турбо dig:=[]; for m:=1 to (100-7) div 5 do for n:=1 to (100-5) div 7 do begin a:=5*m+7*n; dig:=dig+[a]; end; for m:=12 to 100 do if m in dig then write (m,' '); readln end.
Объяснение кода листинга программы
- В начале кода используется директива
uses crt;, которая позволяет использовать функции и структуры из стандартной библиотеки Turbo Pascal. - Далее объявляются переменные
m,nиaтипаinteger. - Объявляется набор
digтипаset of 5..100, который представляет собой множество чисел от 5 до 100 включительно. - В цикле
forпроисходит инициализация и генерация чиселmиn. - Затем происходит расчет значения переменной
aкак суммыmиn. - Полученное значение
aдобавляется в множествоdig. - После этого происходит проверка условия
if m in dig then write (m, ' '), гдеwrite- это функция записи строки в файл, а(m, ' ')- это запись значения переменнойmи пробела в файл. - Цикл
forзавершается, и программа продолжает выполнение. - В конце программы происходит вызов функции
readln, которая позволяет пользователю ввести данные для продолжения работы программы.