На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> работа с множествами
    помогите, пожалуйста, составить программу

    В каждом из 3-х вузов может изучаться множество языков программирования: basic, pascal, prolog, clipper, cu, logo. Ввести с клавиатуры множество языков, изучаемых в каждом из вузов. Построить множество В, содержащее названия языков, изучаемых только в одном из 3-х вузов.
      Цитата
      Ввести с клавиатуры множество языков, изучаемых в каждом из вузов.

      Можно так попробовать:
      ExpandedWrap disabled
        type
          language=(basic, pascal, prolog, clipper, c, logo);
        var
          a,b,d:set of language;
          s:string;
        begin
          a:=[];
          readln(s);
          if s='pascal' then
            include(a,pascal);
        end.
      Сообщение отредактировано: Булат Шакиров -
        Цитата Булат Шакиров @
        Цитата
        Ввести с клавиатуры множество языков, изучаемых в каждом из вузов.

        Можно так попробовать:
        ExpandedWrap disabled
          type
            language=(basic, pascal, prolog, clipper, c, logo);
          var
            a,b,d:set of language;
            s:string;
          begin
            a:=[];
            readln(s);
            if s='pascal' then
              include(a,pascal);
          end.

        [attach=#0][/attach]что то мне не понятно то, что вы написали.
        я вот начал писать программу, но не знаю как закончить, там нужно условие написать, чтобы строилось множество языков изучаемых только в одном из 3-х вузов.
        может подскажите как?
        вот прога:
          А что именно непонятно?
            Цитата Булат Шакиров @
            include(a,pascal)

            ну это же не вся программа, как я понимаю?
            и что делает вот эта команда: include(a,pascal) ?
              Цитата

              Построить множество В, содержащее названия языков, изучаемых только в одном из 3-х вузов.

              А как вы его строите?

              Добавлено
              Нет, конечно, только пример.
              Include включает элемент во множество
                Цитата Булат Шакиров @
                А как вы его строите?

                я вот так начал программу Прикреплённый файлПрикреплённый файл____________________3.jpg (62,79 Кбайт, скачиваний: 358)
                а вот как построить это множество как раз таки и не знаю...
                  Например так
                  ExpandedWrap disabled
                    type
                      language=(basic, pascal, prolog, clipper, c, logo);
                    var
                      a,b,d:set of language;
                    begin
                      a:=[];
                      d:=[];
                      include(a,pascal);
                      d:=a+[logo];
                      if a>=d then
                        b:=a-d
                      else
                        b:=d-a;
                    end.

                  В 1-м вузе изучают basic, pascal, во втором изучают тоже самое + logo
                  В b будет только logo
                  Прикреплённый файлПрикреплённый файл____________________.png (78,03 Кбайт, скачиваний: 506)
                  Сообщение отредактировано: Булат Шакиров -
                    Цитата Булат Шакиров @

                    спасибо, попробую сделать
                      Попробуйте еще такой вариант:
                      ExpandedWrap disabled
                        b:=exclude(a+d,a*d);

                      Пусть a - множество из basic, logo; d - basic, logo,c;
                      Тогда обьединение множеств (+) даст basic,logo,c; а пересечение (*) basic, logo;
                      Исключение из обьединения множеств его пересечения даст элемент c

                      Добавлено
                      Не проверял, могу ошибаться.
                        Цитата Булат Шакиров @
                        Пусть a - множество из basic, logo; d - basic, logo,c;
                        Тогда обьединение множеств (+) даст basic,logo,c; а пересечение (*) basic, logo;
                        Исключение из обьединения множеств его пересечения даст элемент c

                        это все применимо в том варианте, который я начал писать? или надо с начала программу по новому писать?
                          А проверьте на своем варианте;
                          ExpandedWrap disabled
                            b:=exclude(t[1]+t[2]+t[3],t[1]*t[2]*t[3]);


                          Добавлено
                          Не t конечно, a m

                          Добавлено
                          И не b, а g например.
                            Цитата Булат Шакиров @
                            А проверьте на своем варианте;

                            b:=exclude(t[1]+t[2]+t[3],t[1]*t[2]*t[3]);

                            неправильно выводит результат
                              В смысле? Паскаль не умеет выводить элементы множества. :huh:
                                Цитата Булат Шакиров @
                                В смысле? Паскаль не умеет выводить элементы множества.

                                ну он должен вывести на экран те языки, которые изучаются только в одном вузе.
                                а он выводит их неверно.
                                  Хорошо, сейчас проверю.
                                    Цитата Булат Шакиров @

                                    пишет, что ошибка в выражении. курсор мигает на начале слова exclude
                                      Все правильно. И должно мигать. Exclude исключает один элемент из множества. Косяк мой. ;)

                                      вот так работает
                                      ExpandedWrap disabled
                                        type
                                          language=(basic, pascal, prolog, clipper, c, logo);
                                        var
                                          a,b,d:set of language;
                                        begin
                                          a:=[];
                                          d:=[];
                                          include(a,pascal);
                                          a:=a+[basic];
                                          d:=a+[logo];
                                          b:=(a+d)-a*d;
                                        end.


                                      Добавлено
                                      То есть нужно найти объединение множеств, затем из него вычесть пересечение.
                                      проверяйте на своих данных
                                        Цитата Булат Шакиров @
                                        То есть нужно найти объединение множеств, затем из него вычесть пересечение.
                                        проверяйте на своих данных

                                        пробую
                                        пока что то не выходит
                                          Бросьте сюда код
                                            Цитата Булат Шакиров @
                                            Бросьте сюда код

                                            ExpandedWrap disabled
                                              program gr;
                                                      uses crt;
                                              type s=(basik, paskal, prolog, cu, logo);
                                                   x=set of s;
                                                   yaz=array[1..5] of x;
                                              var i:s;
                                                  m:yaz;
                                                  g,t,t1,t2,t3,t4:x;
                                                  k,j:integer;
                                              begin
                                                   clrscr;
                                                   writeln('1 basic');
                                                   writeln('2 paskal');
                                                   writeln('3 prolog');
                                                   writeln('4 cu');
                                                   writeln('5 logo');
                                                   for j:=1 to 3 do
                                                       begin
                                                       t:=[];
                                                       write('‚введите номера для',j,'-го вуза ');
                                                       repeat
                                                             read(k);
                                                       case k of
                                                       1:i:=basik;
                                                       2:i:=paskal;
                                                       3:i:=prolog;
                                                       4:i:=cu;
                                                       5:i:=logo;
                                                       end;
                                                       t:=t+[i];
                                                       until
                                                            eoln;
                                                       m[j]:=t;
                                                       end;

                                            ну вот то, что я изначально начал писать
                                            вы про этот код?
                                              Да. Поковыряюсь. Проверяйте

                                              Добавлено
                                              ExpandedWrap disabled
                                                program gr;
                                                  uses crt;
                                                type
                                                  s=(basik, paskal, prolog, cu, logo);
                                                  x=set of s;
                                                  yaz=array[1..5] of x;
                                                 
                                                var
                                                  i:s;
                                                  m:yaz;
                                                  g,t,t1,t2,t3,t4:x;
                                                  k,j:integer;
                                                  b:byte;
                                                begin
                                                  clrscr;
                                                  writeln('1 basic');
                                                  writeln('2 paskal');
                                                  writeln('3 prolog');
                                                  writeln('4 cu');
                                                  writeln('5 logo');
                                                  writeln('любая клавиша следущий вуз');
                                                 
                                                  for j:=1 to 3 do
                                                    begin
                                                      t:=[];
                                                      write('введите номера для ',j,'-го вуза ');
                                                      repeat
                                                        read(k);
                                                        case k of
                                                          1:t:=t+[basik];
                                                          2:t:=t+[paskal];
                                                          3:include(t,prolog);
                                                          4:t:=t+[cu];
                                                          5:t:=t+[logo]
                                                 
                                                        else
                                                          break;
                                                        end;
                                                      until false;
                                                      b:=sizeof(t);
                                                      m[j]:=t;
                                                      t4:=(m[1]+m[2]+m[3])-(m[1]*m[2]*m[3]);
                                                    end;
                                                end.
                                              Сообщение отредактировано: Булат Шакиров -
                                                Цитата Булат Шакиров @
                                                Проверяйте
                                                не работает((( ошибку выдает
                                                ExpandedWrap disabled
                                                  program gr;
                                                    uses crt;
                                                  type
                                                    s=(basik, paskal, prolog, cu, logo);
                                                    x=set of s;
                                                    yaz=array[1..5] of x;
                                                   
                                                  var
                                                    i:s;
                                                    m:yaz;
                                                    g,t,t1,t2,t3,t4:x;
                                                    k,j:integer;
                                                    b:byte;
                                                  begin
                                                    clrscr;
                                                    writeln('1 basic');
                                                    writeln('2 paskal');
                                                    writeln('3 prolog');
                                                    writeln('4 cu');
                                                    writeln('5 logo');
                                                    writeln('любая клавиша следущий вуз');
                                                   
                                                    for j:=1 to 3 do
                                                      begin
                                                        t:=[];
                                                        write('введите номера для ',j,'-го вуза ');
                                                        repeat
                                                          read(k);
                                                          case k of
                                                            1:t:=t+[basik];                   <------- здесь выдает ошибку, несоответствие типа.
                                                            2:t:=t+[paskal];
                                                            3:include(t,prolog);
                                                            4:t:=t+[cu];
                                                            5:t:=t+[logo]
                                                   
                                                          else
                                                            break;
                                                          end;
                                                        until false;
                                                        b:=sizeof(t);
                                                        m[j]:=t;
                                                        t4:=(m[1]+m[2]+m[3])-(m[1]*m[2]*m[3]);
                                                      end;
                                                  end.
                                                  Какую ошибку? Чего пишет? У меня в fpc отработал нормально.
                                                    Цитата Булат Шакиров @
                                                    Какую ошибку? Чего пишет? У меня в fpc отработал нормально.

                                                    смотрите в пред сообщении, я в программе пометил где ошибка

                                                    Добавлено
                                                    Цитата Булат Шакиров @
                                                    Какую ошибку? Чего пишет? У меня в fpc отработал нормально.

                                                    1:t:=t+[basik]; <------- здесь выдает ошибку, несоответствие типа.
                                                      Попробуйте
                                                      Include(t, basik);

                                                      Добавлено
                                                      Что за паскаль у вас? Какой-то странный. По виду вроде турбо, но с русским меню. Скачайте современный компилятор.
                                                        Цитата Булат Шакиров @
                                                        Попробуйте
                                                        Include(t, basik);

                                                        так запускается, но результат то на экран она не выводит
                                                        а нужно, чтобы вывелся результат, какие языки изучается только в одном вузе

                                                        Добавлено
                                                        Цитата Булат Шакиров @
                                                        Что за паскаль у вас? Какой-то странный. По виду вроде турбо, но с русским меню. Скачайте современный компилятор.

                                                        Dos Box: турбо паскаль. у меня
                                                        на винде 8 вроде только он работает просто
                                                          Элементы множества нельзя выводить на экран. Исхитриться можно так:
                                                          http://comp-science.narod.ru/Progr/mn.htm
                                                          Посмотрите процедуру print

                                                          Современые компилятор паскаля - freepascal.org
                                                            Цитата Булат Шакиров @
                                                            Элементы множества нельзя выводить на экран.

                                                            ну по заданию надо вывести
                                                            преподаватель же должен как то проверить
                                                            мы на паре просто рассматривали похожую задачу, там выводился результат на экран

                                                            Добавлено
                                                            Цитата Булат Шакиров @
                                                            Посмотрите процедуру print

                                                            хорошо. щас посмотрю

                                                            Добавлено
                                                            Цитата Булат Шакиров @
                                                            Элементы множества нельзя выводить на экран. Исхитриться можно так:
                                                            http://comp-science.narod.ru/Progr/mn.htm
                                                            Посмотрите процедуру print

                                                            что то все равно не получается(
                                                              Счас поковыряюсь

                                                              Добавлено
                                                              ExpandedWrap disabled
                                                                program gr;
                                                                  uses crt;
                                                                type
                                                                  s=(basik, paskal, prolog, cu, logo);
                                                                  names=array [s] of string[20];
                                                                  x=set of s;
                                                                  yaz=array[1..5] of x;
                                                                const
                                                                  NamesStr : Names =('basik', 'paskal', 'prolog', 'cu', 'logo');
                                                                var
                                                                  i:s;
                                                                  m:yaz;
                                                                  g,t,t1,t2,t3,t4:x;
                                                                  k,j:integer;
                                                                begin
                                                                  clrscr;
                                                                  writeln('1 basic');
                                                                  writeln('2 paskal');
                                                                  writeln('3 prolog');
                                                                  writeln('4 cu');
                                                                  writeln('5 logo');
                                                                  writeln('любая клавиша следущий вуз');
                                                                 
                                                                  for j:=1 to 3 do
                                                                    begin
                                                                      t:=[];
                                                                      write('введите номера для ',j,'-го вуза ');
                                                                      repeat
                                                                        read(k);
                                                                        case k of
                                                                          1:include(t,basik);
                                                                          2:include(t,paskal);
                                                                          3:include(t,prolog);
                                                                          4:include(t,cu);
                                                                          5:include(t,logo)
                                                                 
                                                                        else
                                                                          break;
                                                                        end;
                                                                      until false;
                                                                      m[j]:=t;
                                                                      t4:=(m[1]+m[2]+m[3])-(m[1]*m[2]*m[3]);
                                                                    end;
                                                                    for i:=basik to logo do
                                                                      if i in t4 then
                                                                        writeln(NamesStr[(i)]);
                                                                end.
                                                                Цитата Булат Шакиров @
                                                                Счас поковыряюсь

                                                                Добавлено 27 минут назад

                                                                program gr;
                                                                  uses crt;
                                                                type
                                                                  s=(basik, paskal, prolog, cu, logo);
                                                                  names=array [s] of string[20];
                                                                  x=set of s;
                                                                  yaz=array[1..5] of x;
                                                                const
                                                                  NamesStr : Names =('basik', 'paskal', 'prolog', 'cu', 'logo');
                                                                var
                                                                  i:s;
                                                                  m:yaz;
                                                                  g,t,t1,t2,t3,t4:x;
                                                                  k,j:integer;
                                                                begin
                                                                  clrscr;
                                                                  writeln('1 basic');
                                                                  writeln('2 paskal');
                                                                  writeln('3 prolog');
                                                                  writeln('4 cu');
                                                                  writeln('5 logo');
                                                                  writeln('любая клавиша следущий вуз');
                                                                 
                                                                  for j:=1 to 3 do
                                                                    begin
                                                                      t:=[];
                                                                      write('введите номера для ',j,'-го вуза ');
                                                                      repeat
                                                                        read(k);
                                                                        case k of
                                                                          1:include(t,basik);
                                                                          2:include(t,paskal);
                                                                          3:include(t,prolog);
                                                                          4:include(t,cu);
                                                                          5:include(t,logo)
                                                                 
                                                                        else
                                                                          break;
                                                                        end;
                                                                      until false;
                                                                      m[j]:=t;

                                                                опять выводит неверный результат, либо его вообще не выводит..
                                                                не понимаю почему(
                                                                  Напишите, какие данные вы вводили.
                                                                    Цитата Булат Шакиров @
                                                                    Напишите, какие данные вы вводили.

                                                                    ну просто ввожу номера языков для каждого вуза, к примеру:
                                                                    123
                                                                    234
                                                                    514
                                                                    пробовал как слитно писать, так и через пробел
                                                                      Число ентер, число ентер, выход другой символ кроме 1..5
                                                                      Вот так у меня отработало
                                                                      Прикреплённый файлПрикреплённый файл____________________.png (61,22 Кбайт, скачиваний: 383)
                                                                        Цитата Булат Шакиров @
                                                                        Число ентер, число ентер, выход другой символ кроме 1..5
                                                                        Вот так у меня отработало

                                                                        ну вроде так работает)
                                                                        спасибо большое)
                                                                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                        0 пользователей:


                                                                        Рейтинг@Mail.ru
                                                                        [ Script execution time: 0,0828 ]   [ 20 queries used ]   [ Generated: 28.04.24, 18:21 GMT ]