|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
20.11.2011, 15:26 | #1 (permalink) |
Member
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
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. |
20.11.2011, 15:26 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Сейчас лучшее, что можно сделать - это прочитать схожие посты Возможно перегрев Возможно ли? Такое возможно? |
20.11.2011, 15:31 | #2 (permalink) |
Banned
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
|
Привел в читаемый вид:
Код:
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. Использование глобальной переменной k - стилистический минус. Тестировали программу? |
20.11.2011, 15:47 | #5 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Попробую.
В принципе вроде всё правильно, и программа работает, вот только... 1. Вам обязательно использовать тип "множество"? Дело в том, что исходная задачка решается безо всяких множеств, через массивы, куда как проще и короче. А так это из серии "достать правое ухо через-под левое колено". Можно, конечно, и так. 2. А вот это существеннее. На самом деле, Вы решили не совсем ту задачу, которая поставлена. Ведь в задаче говорится о вводе некоторого количества чисел либо с клавиатуры, либо через генератор случайных чисел, а Вы вместо этого просто берёте последовательность от 1 до 20. Так, конечно, проще, но в задаче требуется другое. И как такую задачу решать через множества я, откровенно говоря, не представляю. P.S. Ну и замечания, высказанные LongCat, безусловно, тоже справедливы. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
20.11.2011, 16:02 | #8 (permalink) |
Member
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Да, задачу нужно решить с множествами! И как это сделать я и сама не знаю(((
Как я знаю, вводить множества с клавиатуры непосредственно нельзя. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|