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

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

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

Автор: Korsar 2.12.2006 3:13

Народ помогите пожалуйста решить задачу!!!!!
Используя структурированный тип множество выполнить следующие действия с исходными данными. Если мощность множества (количество элементов без учета повторений) не задана, принять ее равной 10. Значения элементов исходных множеств ввести с клавиатуры. На экран вывести исходные и полученные множества.
Дано множество X1, содержащее целые числа из диапазона [1..100]. Сформировать новое множество Y1 путем выделения из множества X1 нечетных чисел, множество Y2 путем выделения из множества X1, чисел, кратных 15. На экран вывести исходное и полученные множества, а также мощность множества Y2.

Или подскажите где есть подобная. Заранее благодарен.

Автор: volvo 2.12.2006 3:22

Здесь есть нечто ОЧЕНЬ похожее:
http://forum.pascal.net.ru/index.php?s=&showtopic=13092&view=findpost&p=76314

Автор: Korsar 2.12.2006 4:20

А именно эту задачу решить помогите пожалуйста!!!

Автор: Ozzя 2.12.2006 11:32

Цитата(Korsar @ 2.12.2006 1:20) *

А именно эту задачу решить помогите пожалуйста!!!

Ты ответ Volvo по ссылке смотрел?
Там же только по одной строчке кода изменить нужно. Кратность 6 на кратность 15, и на нечетность.

Автор: Korsar 2.12.2006 15:54

Что означает функция include???

Автор: мисс_граффити 2.12.2006 16:23

включить в множество

Автор: Korsar 8.12.2006 6:16

Люди добрые, скажите пожалуйста что в этой программе не правильно? Задание сверху.

program laba;
uses crt;
const n=10;
var i,s: integer;
procedure vvod;
var i,s: integer;
begin
for s:=1 to n do
writeln('введите элемент множества');
readln(n);
end;
procedure vivodr;
var i,s: integer;
begin
for s:=1 to n do
if (i mod 2=1) then
writeln('множество нечетных чисел:',i);
end;
procedure vivodr15;
var i,s: integer;
begin
for s:=1 to n do
if (i mod 15=0) then
writeln('множество чисел кратных 15:',i);
end;
begin
vivod;
vivodr;
vivodr15;
readln;
end.

Автор: volvo 8.12.2006 6:51

Цитата
что в этой программе не правильно?
blink.gif Где у тебя множества-то? Целые числа вижу, слово Set вообще не присутствует ни разу...

Автор: Korsar 8.12.2006 17:34

Вот щас set использовал. Мне надо чтобы я сам с клавиатуры значения вводил, а прога десять раз 'введите элемент множества' напишет и все!!! Почему так и вообще я правильно делаю или нет?


program laba;
uses crt;
const n=10;
procedure vvod;
var i: set of byte
s: integer;
begin
for s:=1 to n do
writeln('введите элемент множества');
readln(a);
end;
procedure vivodr;
var i: set of byte
s: integer;
begin
for s:=1 to n do
if (a in i) and (a mod 2=1) then
writeln('множество нечетных чисел:',i);
end;
procedure vivodr15;
var i: set of byte
s: integer;
begin
for s:=1 to n do
if (a in i) and (a mod 15=0) then
writeln('множество чисел кратных 15:',a);
end;
begin
vivod;
i:=[a];
vivodr;
vivodr15;
readln;
end.

Автор: Pola 8.12.2006 17:38

1 ты его вводишь( к сожалению не в цикле), но не добавляешь во множество

2 i опиши как глобальную или передавай как параметр.

Автор: Korsar 8.12.2006 17:56

Цитата

1 ты его вводишь( к сожалению не в цикле), но не добавляешь во множество

2 i опиши как глобальную или передавай как параметр.

1 А разве i:=[a]; не добавление в множество? Если нет то как добавить?
2 Как описать в том или другом случае? Чем byte не подходит?

Автор: Pola 8.12.2006 18:16

Цитата
1 А разве i:=[a]; не добавление в множество? Если нет то как добавить?
i:=i+[a]; или Include(i,a); и после ввода a

Цитата
2 Как описать в том или другом случае?


program laba;
uses crt;
const n=10;

var i: set of byte; {<--------- если глобальная i}

procedure vvod;
var a,s: byte; {<------- локальные a,s}
begin
i:=[]; {начальное значение}
for s:=1 to n do
begin {чтоб все три действия в цикле были, а не одно первое !}
write('введите элемент множества ');
readln(a); {вводим}
i:=i+[a];{ добавляем}
end;
end;

begin
vvod; {вызов}
...

end.


program laba;
uses crt;
const n=10;

type
sob=set of byte; {<-----тип новый описываем}


procedure vvod(var i: sob); {<--------- если параметр процедуры};

var a,s: byte; {<------- локальные a,s}
begin
i:=[]; {начальное значение}
for s:=1 to n do
begin {чтоб все три действия в цикле были, а не одно первое !}
write('введите элемент множества ');
readln(a); {вводим}
i:=i+[a];{ добавляем}
end;
end;

var i: sob; {<------ переменные для программы}
begin
vvod(i); {<-- вызов с параметром}
...

end.

Автор: Korsar 8.12.2006 21:41

Спасибо большое Pola!!! Все равно не получается что-то!!! Ввожу элементы множества, после ввода последнего элемента нажимаю Enter и меня выбрасывает обратно. В чем дело? Что я не правильно делаю?

Код

program laba;
uses crt;
const n=10;
var i: set of byte
   procedure vvod;
     var a,s: byte;
      begin
       i:=[];
        for s:=1 to n do
         begin
          write('введите элемент множества ');
          readln(a);
          i:=i+[a];
         end;
      end;
   procedure vivodr;
     var a,s: byte;
           begin
            for s:=1 to n do
             if (a in i) and (a mod 2=1) then
              writeln('множество нечетных чисел:',i);
           end;
    procedure vivodr15;
     var a,s: byte;
       begin
        for s:=1 to n do
         if (a in i) and (a mod 15=0) then
          writeln('множество чисел кратных 15:',a);
       end;    
begin
  vivod;
  vivodr;
  vivodr15;
  readln;
end.  

Автор: Korsar 9.12.2006 2:45

Народ, ну подмогните пожалуйста бедному студенту!!!!!!!!! sad.gif

Автор: мисс_граффити 9.12.2006 3:55

у меня вообще не компилируется...
а у тебя выбрасывает уже ПОСЛЕ ввода?
какой у тебя компилятор, что позволяет делать

writeln('множество нечетных чисел:',i);
?
да и кроме этого ошибки есть.

Автор: Korsar 9.12.2006 6:02

Цитата(мисс_граффити @ 8.12.2006 23:55) *

у меня вообще не компилируется...
а у тебя выбрасывает уже ПОСЛЕ ввода?
какой у тебя компилятор, что позволяет делать
writeln('множество нечетных чисел:',i);
?
да и кроме этого ошибки есть.

Да нет там у меня просто описка!!! А где еще ошибки есть? Скажите пожалуйста!!!

Автор: мисс_граффити 9.12.2006 12:15

Я что, компилятор?
Запускаешь какой-нибудь компилятор - он тебе все строчки с ошибками покажет.

Автор: Гость 9.12.2006 15:52

Всем большое спасибо!!! Я нашел все ошибки.