Помощь - Поиск - Пользователи - Календарь
Полная версия: Структурированный тип множество
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Korsar
Народ помогите пожалуйста решить задачу!!!!!
Используя структурированный тип множество выполнить следующие действия с исходными данными. Если мощность множества (количество элементов без учета повторений) не задана, принять ее равной 10. Значения элементов исходных множеств ввести с клавиатуры. На экран вывести исходные и полученные множества.
Дано множество X1, содержащее целые числа из диапазона [1..100]. Сформировать новое множество Y1 путем выделения из множества X1 нечетных чисел, множество Y2 путем выделения из множества X1, чисел, кратных 15. На экран вывести исходное и полученные множества, а также мощность множества Y2.

Или подскажите где есть подобная. Заранее благодарен.
Korsar
А именно эту задачу решить помогите пожалуйста!!!
Ozzя
Цитата(Korsar @ 2.12.2006 1:20) *

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

Ты ответ Volvo по ссылке смотрел?
Там же только по одной строчке кода изменить нужно. Кратность 6 на кратность 15, и на нечетность.
Korsar
Что означает функция include???
мисс_граффити
включить в множество
Korsar
Люди добрые, скажите пожалуйста что в этой программе не правильно? Задание сверху.
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
Цитата
что в этой программе не правильно?
blink.gif Где у тебя множества-то? Целые числа вижу, слово Set вообще не присутствует ни разу...
Korsar
Вот щас 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
1 ты его вводишь( к сожалению не в цикле), но не добавляешь во множество

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

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

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

1 А разве i:=[a]; не добавление в множество? Если нет то как добавить?
2 Как описать в том или другом случае? Чем byte не подходит?
Pola
Цитата
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
Спасибо большое 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
Народ, ну подмогните пожалуйста бедному студенту!!!!!!!!! sad.gif
мисс_граффити
у меня вообще не компилируется...
а у тебя выбрасывает уже ПОСЛЕ ввода?
какой у тебя компилятор, что позволяет делать
writeln('множество нечетных чисел:',i);
?
да и кроме этого ошибки есть.
Korsar
Цитата(мисс_граффити @ 8.12.2006 23:55) *

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

Да нет там у меня просто описка!!! А где еще ошибки есть? Скажите пожалуйста!!!
мисс_граффити
Я что, компилятор?
Запускаешь какой-нибудь компилятор - он тебе все строчки с ошибками покажет.
Гость
Всем большое спасибо!!! Я нашел все ошибки.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.