Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Множества

Автор: snopy 10.12.2007 22:19

Помогите пожайлуста найти ошибку.
В институте имеются секции по следующим видам спорта:
лыжи, коньки, хоккей, футбол, регби, самбо. Известны виды спорта, которыми занимаются учащиеся каждой группы. Количество групп -4. Требуется построить и распечатать множество видов спорта:
1) которыми занимаются хотя бы в одной группе;
2) которыми не занимаются во всех группах.

Код

const
    n=2;
type
   Sport=(Skis,Skates,hoccey,football,regbi,sambo);
   vid=set of sport;
   zanytia=array[1..n] of vid;
var
   M1:zanytia;
   x:sport;
a,b,c,xm1:vid;
i,j,m,iw:byte;
BEGIN
    for i:=1 to n do
        begin
             xm1:=[];
              writeln('Vvedite nomera sportov ',i:2,'-go sporta');
                     repeat
                          read(iw);
                                  case iw of
                                           1:x:=skis;
                                           2:x:=skates;
                                           3:x:=hoccey;
                                           4:x:=football;
                                           5:x:=regbi;
                                           6:x:=sambo
                                           else
                                              writeln('Nomera sportov 1..6')
                                           end;
                                           xm1:=xm1+[x];
                                           until eoln;
                                           m1[i]:=xm1;
                                           end;
                                           c:=[Skis,Skates,hoccey,football,regbi,sambo];
                                           A:=m1[1]+m1[2];
                                           B:=B-A;
                                                  for i:=1 to n do
                                                      begin
                                                           case i of
                                                                    1:writeln('kotorymi zanimautcy xotyby v odnoy grupe: ');
                                                                    2:writeln('kotorymi ne zanimautcy vo vsech gruppax: ');
                                                  end;
                                           for x:=skis to sambo do
                                               if x in a then
                                                   case x of
                                                            Skis:write('Skis')
                                                          Skates:write('Skates')
                                                          hoccey:write('hoccey')
                                                        football:write('football')
                                                           regbi:write('regbi')
                                                           sambo:write('sambo')
                                                    end;
                                                if i:=1 then a:=b
                                                        else
                                                            a:=c; writeln;
end;
End.

Автор: volvo 10.12.2007 22:51

Тебе компилятор скажет где ошибки... Нажми F9 для этого... Вот когда ВСЕ синтаксические ошибки исправишь - приходи...

Автор: snopy 10.12.2007 23:18

Вот исправил только мне кажется где то всё равно ошибка

Код

const
    n=4;
type
   Sport=(Skis,Skates,hoccey,football,regbi,sambo);
   vid=set of sport;
   zanytia=array[1..n] of vid;
var
   M1:zanytia;
   x:sport;
a,b,c,xm1:vid;
i,j,m,iw:byte;
BEGIN
    for i:=1 to n do
        begin
             xm1:=[];
              writeln('Vvedite nomera sportov ',i:2,'-go sporta');
                     repeat
                          read(iw);
                                  case iw of
                                           1:x:=skis;
                                           2:x:=skates;
                                           3:x:=hoccey;
                                           4:x:=football;
                                           5:x:=regbi;
                                           6:x:=sambo
                                           else
                                              writeln('Nomera sportov 1..6')
                                           end;
                                           xm1:=xm1+[x];
                                           until eoln;
                                           m1[i]:=xm1;
                                           end;
                                           c:=[Skis,Skates,hoccey,football,regbi,sambo];
                                           A:=m1[1]+m1[2];
                                           B:=B-A;
                                                  for i:=1 to n do
                                                      begin
                                                           case i of
                                                                    1:writeln('kotorymi zanimautcy xotyby v odnoy grupe: ');
                                                                    2:writeln('kotorymi ne zanimautcy vo vsech gruppax: ');
                                                  end;
                                           for x:=skis to sambo do
                                               if x in a then
                                                   case x of
                                                            Skis:write('Skis');
                                                          Skates:write('Skates');
                                                          hoccey:write('hoccey');
                                                        football:write('football');
                                                           regbi:write('regbi');
                                                           sambo:write('sambo');
                                                     end;
                                                if i=1 then a:=b
                                                        else
                                                            a:=c; writeln;
end;
End.

Автор: snopy 11.12.2007 19:38

Пожайлуста помогите

Автор: snopy 12.12.2007 0:24

ашёл ещё ошибку у себя. Помогите найти другие

Код

const
    n=4;
type
   Sport=(Skis,Skates,hoccey,football,regbi,sambo);
   vid=set of sport;
   zanytia=array[1..n] of vid;
var
   M1:zanytia;
   x:sport;
a,b,c,xm1:vid;
i,j,m,iw:byte;
BEGIN
    for i:=1 to n do
        begin
             xm1:=[];
              writeln('Vvedite nomera sportov ',i:2,'-go sporta');
                     repeat
                          read(iw);
                                  case iw of
                                           1:x:=skis;
                                           2:x:=skates;
                                           3:x:=hoccey;
                                           4:x:=football;
                                           5:x:=regbi;
                                           6:x:=sambo
                                           else
                                              writeln('Nomera sportov 1..6')
                                           end;
                                           xm1:=xm1+[x];
                                           until eoln;
                                           m1[i]:=xm1;
                                           end;
                                           c:=[Skis,Skates,hoccey,football,regbi,sambo];
                                           A:=m1[1]+m1[2]+m1[3]+m1[4];
                                           B:=B-A;
                                                  for i:=1 to n do
                                                      begin
                                                           case i of
                                                                    1:writeln('kotorymi zanimautcy xotyby v odnoy grupe: ');
                                                                    2:writeln('kotorymi ne zanimautcy vo vsech gruppax: ');
                                                  end;
                                           for x:=skis to sambo do
                                               if x in a then
                                                   case x of
                                                            Skis:write('Skis');
                                                          Skates:write('Skates');
                                                          hoccey:write('hoccey');
                                                        football:write('football');
                                                           regbi:write('regbi');
                                                           sambo:write('sambo');
                                                     end;
                                                if i=1 then a:=b
                                                        else
                                                            a:=c; writeln;
end;
End.

Автор: Malice 12.12.2007 0:49

Цитата
c:=[Skis,Skates,hoccey,football,regbi,sambo];
A:=m1[1]+m1[2]+m1[3]+m1[4];
B:=B-A;

У тебя значение B не определено, а ты из него вычитаешь. Логичней было б B:=C-A;
Да и цикл следующий до n зачем ? До 2-х вроде надо.

Автор: snopy 12.12.2007 0:51

Цитата(Malice @ 11.12.2007 20:49) *

У тебя значение B не определено, а ты из него вычитаешь. Логичней было б B:=C-A;


так тоже не получается

Добавлено через 3 мин.
Вот ещё додумал только с выводом проблема там где надо чтоб писалось которыми не занимаются во всех группах это пишется правильно только ниже идёт две строчки перечесления спортов
Код

const
    n=4;
type
   Sport=(Skis,Skates,hoccey,football,regbi,sambo);
   vid=set of sport;
   zanytia=array[1..n] of vid;
var
   M1:zanytia;
   x:sport;
a,b,c,xm1:vid;
i,j,m,iw:byte;
BEGIN
    for i:=1 to n do
        begin
             xm1:=[];
              writeln('Vvedite nomera sportov ',i:2,'-go sporta');
                     repeat
                          read(iw);
                                  case iw of
                                           1:x:=skis;
                                           2:x:=skates;
                                           3:x:=hoccey;
                                           4:x:=football;
                                           5:x:=regbi;
                                           6:x:=sambo
                                           else
                                              writeln('Nomera sportov 1..6')
                                           end;
                                           xm1:=xm1+[x];
                                           until eoln;
                                           m1[i]:=xm1;
                                           end;
                                           c:=[Skis,Skates,hoccey,football,regbi,sambo];
                                           A:=m1[1]+m1[2]+m1[3]+m1[4];
                                           B:=C-A;
                                                  for i:=1 to n do
                                                      begin
                                                           case i of
                                                                    1:writeln('kotorymi zanimautcy xotyby v odnoy grupe: ');
                                                                    2:writeln('kotorymi ne zanimautcy vo vsech gruppax: ');
                                                  end;
                                           for x:=skis to sambo do
                                               if x in a then
                                                   case x of
                                                            Skis:write('Skis');
                                                          Skates:write(' Skates');
                                                          hoccey:write(' hoccey');
                                                        football:write(' football');
                                                           regbi:write(' regbi');
                                                           sambo:write(' sambo');
                                                     end;
                                                if i=1 then a:=b
                                                       else
                                                           a:=c;
                                             writeln;
end;
End.





Добавлено через 5 мин.
Malice спасибо тебе за то что указал на цикл. Теперь всё работает