Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 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
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Сейчас лучшее, что можно сделать - это прочитать схожие посты

Возможно перегрев
Возможно ли?
Такое возможно?

Старый 20.11.2011, 15:31   #2 (permalink)
Long Cat
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 нигде не инициализирована - ошибка.
Использование глобальной переменной k - стилистический минус.
Тестировали программу?
Long Cat вне форума   Ответить с цитированием
Старый 20.11.2011, 15:37   #3 (permalink)
Ильгиза
Member
 
Регистрация: 08.10.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Спасибо! Да тестировала!Но я не уверена, что мое решение соответствует условию задачи.
Ильгиза вне форума   Ответить с цитированием
Старый 20.11.2011, 15:38   #4 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Не соответствует. Требуется вывести числа, которые делятся на 3 и на 8 одновременно.
Long Cat вне форума   Ответить с цитированием
Старый 20.11.2011, 15:47   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Ильгиза Посмотреть сообщение
сделала так, но в своем решении не уверена( Помогите разобраться!
Попробую.
В принципе вроде всё правильно, и программа работает, вот только...
1. Вам обязательно использовать тип "множество"? Дело в том, что исходная задачка решается безо всяких множеств, через массивы, куда как проще и короче. А так это из серии "достать правое ухо через-под левое колено". Можно, конечно, и так.
2. А вот это существеннее. На самом деле, Вы решили не совсем ту задачу, которая поставлена. Ведь в задаче говорится о вводе некоторого количества чисел либо с клавиатуры, либо через генератор случайных чисел, а Вы вместо этого просто берёте последовательность от 1 до 20. Так, конечно, проще, но в задаче требуется другое. И как такую задачу решать через множества я, откровенно говоря, не представляю.
P.S. Ну и замечания, высказанные LongCat, безусловно, тоже справедливы.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 20.11.2011, 15:51   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Long Cat Посмотреть сообщение
Переменная k нигде не инициализирована - ошибка.
Ну, не совсем. Насколько я знаю, в этом ублюдочном АВС обнуление исходных значений переменных зашито. Включая даже строки.
Vladimir_S вне форума   Ответить с цитированием
Старый 20.11.2011, 15:55   #7 (permalink)
Long Cat
Banned
 
Регистрация: 01.09.2009
Сообщений: 4,396
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 2544
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Насколько я знаю, в этом ублюдочном АВС обнуление исходных значений переменных зашито. Включая даже строки.
Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
, в этом ублюдочном АВС
Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
ублюдочном
Именно так.
Long Cat вне форума   Ответить с цитированием
Старый 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
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:53.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.