Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2014, 22:23   #1
wanted6610
 
Регистрация: 16.12.2014
Сообщений: 5
По умолчанию Ошибка в программе

Проверить включение множества слиянием (является ли множество А подмножеством множества B)
Код:
program lalal;
uses crt;
    type
      mnoj= set of integer;
    var
      i,j,n,n1,n2,p:integer;
      s1,s2:mnoj;
      begin
      clrscr;
      writeln('Введите количество элементов множества A');
      readln(j);
      writeln('Введите количество элементов множества B');
      readln(n);
       for i:=1 to n1 do
    begin
      write(n1,':');
      readln(s1[i]);
    end;
   for i:=1 to n2 do
    begin
      write(n2,':');
      readln(s2[i]);
    end;
      if s1<=s2 then
        writeln('Множество A входит в множество B');
      if s1<>s2 then
        writeln('Множество A не входит в множество B');
    end.
readln(s1[i]); выдает ошибку нет индексного свойства по умолчанию для типа mnoj

Последний раз редактировалось Stilet; 20.12.2014 в 16:04.
wanted6610 вне форума Ответить с цитированием
Старый 20.12.2014, 06:05   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Цитата:
s1[i]
а массивом нельзя?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 20.12.2014, 15:43   #3
wanted6610
 
Регистрация: 16.12.2014
Сообщений: 5
По умолчанию

а как записать массивом это?
wanted6610 вне форума Ответить с цитированием
Старый 20.12.2014, 15:50   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
var
 mnoj: array of integer;
 s1,s2:mnoj;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 20.12.2014, 16:11   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
выдает ошибку нет индексного свойства по умолчанию для типа mnoj
С множествами так поступать нельзя. Добавление элемента в множество делается либо процедурой include() либо оператором +, если это константа.
И проверка должна быть не через s[i] а через i in s
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.12.2014, 16:53   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

set of integer нельзя. Множество паскаля ограничено 255 элементами.
var m: set of Byte в самый раз.

Включить сложением: m:=m+[25] или m:=m+[b], где b byte или m:=m+[3..5]

Множество А является подмножеством множества B если: A+B=B или A*B=A
Можно и in применить для проверки входимости одного множества во второе, но слишком кучеряво это будет и не эффективно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.12.2014 в 16:56.
Аватар вне форума Ответить с цитированием
Старый 20.12.2014, 18:21   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можно и in применить для проверки входимости одного множества во второе, но слишком кучеряво это будет и не эффективно
Я проверку in подразумевал при необходимости вычислиения что вошло в результативное множество. Это если что...

P.S. Хотя по-моему автору уже не интересно...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.12.2014, 20:09   #8
wanted6610
 
Регистрация: 16.12.2014
Сообщений: 5
По умолчанию

автору интересно, только он общается с паскалем на вы, и не понимает как ему исправить ошибку.
ребят, можете исправить программу и написать готовую версию?
wanted6610 вне форума Ответить с цитированием
Старый 20.12.2014, 20:44   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var i,j,k: Byte;
    a,b: set of Byte;
begin
  writeln('Введите количество элементов множества A');
  readln(j);
  writeln('Введите элементы множества A');
  for i:=1 to j do begin write(':'); readln(k); a:=a+[k]; end;
  writeln('Введите количество элементов множества B');
  readln(j);
  writeln('Введите элементы множества B');
  for i:=1 to j do begin write(':'); readln(k); b:=b+[k]; end;
  if a+b=b then writeln('Множество A входит в множество B')
           else writeln('Множество A не входит в множество B');
  readln;
end.
Паскаля нет, для консоли делфи как раз оно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка в программе на Си dimalinho Помощь студентам 3 09.11.2014 18:15
Ошибка в программе Си jula939393 Помощь студентам 6 11.04.2013 21:05
Ошибка в программе Foxx Общие вопросы Delphi 4 19.12.2011 00:54
Ошибка в программе на Си++ Эммануэль Помощь студентам 20 09.04.2011 18:04
Ошибка в программе Veina Помощь студентам 4 06.04.2011 21:32