PascalABC, возможно ошибка
необходимо распечатать множество,удовлетворяющее указанному условию и подсчитать количество элементов в полученном массиве.
Даны n целых чисел( числа вводятся с клавиатуры или с помощью датчика случайных чисел). Напечатать в порядке возрастания те из них, которые удовлетворяют условию: делятся нацело на 3 и 8. сделала так, но в своем решении не уверена( Помогите разобраться! program upr1; const n =20; type mn=set of 1..n; var n3,n8:mn; k,c:integer; procedure vv(m:mn); var i:integer; begin for i:=1 to n do if i in m then begin write(i:3); k:=k+1; end; writeln; end; begin n3:=[]; n3:=[]; for c:=1 to n do begin if c mod 3 = 0 then n3:=n3+[c]; if c mod 8 = 0 then n8:=n8+[c]; end; writeln('числа кратные 3:'); vv(n3); writeln('числа кратные 8:'); vv(n8); writeln('количество элементов во множестве:', k); end. |
Привел в читаемый вид:
Код:
program upr1; Использование глобальной переменной k - стилистический минус. Тестировали программу? |
Спасибо! Да тестировала!Но я не уверена, что мое решение соответствует условию задачи.
|
Не соответствует. Требуется вывести числа, которые делятся на 3 и на 8 одновременно.
|
Цитата:
В принципе вроде всё правильно, и программа работает, вот только... 1. Вам обязательно использовать тип "множество"? Дело в том, что исходная задачка решается безо всяких множеств, через массивы, куда как проще и короче. А так это из серии "достать правое ухо через-под левое колено". Можно, конечно, и так. 2. А вот это существеннее. На самом деле, Вы решили не совсем ту задачу, которая поставлена. Ведь в задаче говорится о вводе некоторого количества чисел либо с клавиатуры, либо через генератор случайных чисел, а Вы вместо этого просто берёте последовательность от 1 до 20. Так, конечно, проще, но в задаче требуется другое. И как такую задачу решать через множества я, откровенно говоря, не представляю. P.S. Ну и замечания, высказанные LongCat, безусловно, тоже справедливы. |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Да, задачу нужно решить с множествами! И как это сделать я и сама не знаю(((
Как я знаю, вводить множества с клавиатуры непосредственно нельзя. |
Часовой пояс GMT +4, время: 15:13. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.