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

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

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

Автор: Ostin 25.04.2006 21:34

всем привет!
есть 4 авто салона и всего 20 марок автомобилей!
надо сделать чтоб показывались марки (набор авто) которые есть сейчас в каждом из салонов! чтобы можно было добовлять удалять марку, какие из тех 20 марок отсутствуют везде, какие есть во всех салонах и выводить которые есть только в данном салоне И СДЕЛАТЬ ВЫБОРКУ АВТОМОБиЛЕЙ КОТОРЫЕ ЕСТЬ В САЛОНЕ (я не совсем понил что значит и что надо сделать в последнем пункте!)

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

Автор: volvo 25.04.2006 21:55

Ну, здесь насколько я понимаю, задача именно в отработке операций над множествами? Что есть "сложение" множеств знаешь? "Умножение"? "Вычитание"?

Здесь: http://forum.pascal.net.ru/index.php?showtopic=3318
я об этом рассказывал. А программы, реализующие все эти операции, есть здесь:
http://forum.pascal.net.ru/index.php?showtopic=3750
http://forum.pascal.net.ru/index.php?s=&showtopic=3618&view=findpost&p=32395

(тебе нужно только разобраться, как это работает, и сделать программу по своему условию...)

Автор: Ostin 25.04.2006 22:47

запутался я окончательно!

program mnojestvo;
digits = set of 0..20;
var
A:set of digits;
B:set of digits;
c: set of digits;
d:set of digits;

так задавать множество!?
как мне их саполнить!? и как сделать чтоб они сравнивались!?

Автор: volvo 25.04.2006 23:15

Type TMySet = set of 0 .. 19; { 20 марок автомобилей }
Var
saloon: array[1 .. 4] of TMySet; { 4 салона }
InAll: TMySet;
i: integer;
Begin
{ в первом салоне есть автомобили марок 1, 3, 6, 7, 8, 9, 10, 11 и 15 }
saloon[1] := [1, 3, 6 .. 11, 15];
...
{ аналогично заполняешь остальные салоны }

{ найдем автомобили, содержащиеся во ВСЕХ салонах: }
InAll := [0 .. 19]; { все возможные марки }
For i := 1 to 4 do InAll := InAll * saloon[i];
{ теперь в InAll перечислены только те марки, которые есть везде }

End.

Я же дал ссылку на решенные задачи. Второй раз переписывать все подряд я не собираюсь.

Автор: Ostin 26.04.2006 22:00

Type TMySet = set of 0 .. 19; { 20  }
Var
saloon: array[1 .. 4] of TMySet; { 4 }
InAll: TMySet;
i: integer;
Begin

saloon[1] := [1, 3, 6 .. 11, 15];
saloon[2] := [2, 4, 6 .. 13, 19];
saloon[3] := [1, 4, 8 .. 11, 18];
saloon[4] := [1, 7, 9 .. 15, 16];

InAll := [0 .. 19];
For i := 1 to 4 do InAll := InAll * saloon[i];

End.
а как вывести результат!?

Автор: volvo 26.04.2006 22:08

Ты по ссылке во втором посте ходил? Там написано, что множества выводятся только через полный перебор возможных значений... В цикле, короче...

For i := 0 to 19 do
if i in InAll Then Write(i:3);

Автор: Ostin 26.04.2006 22:54

program mnoj;
Type TMySet = set of 0 .. 19; { 20 }

Var
saloon: array[1 .. 4] of TMySet; { 4 }
InAll: TMySet;
i: integer;
Begin

saloon[1] := [1, 3, 6 .. 11, 15];
saloon[2] := [2, 4, 6 .. 13, 19];
saloon[3] := [1, 4, 8 .. 11, 18];
saloon[4] := [1, 7, 9 .. 15, 16];

InAll := [0 .. 19];
For i := 1 to 4 do InAll := InAll * saloon[i];

For i := 0 to 19 do
if i in InAll Then Write(i:3);
End.


так получается!? потом тоже самое только * заменяется + и -!?
что-то неработает!((((

хелп ми пиззззззззз!))) мне позарес надо до субботы с этой задачей что нибуть сообразить! помаги пожалуйста!!!))))

Автор: volvo 26.04.2006 23:30

Цитата(Ostin @ 26.04.2006 18:54)
потом тоже самое только * заменяется + и -!?

smile.gif Если бы все было так просто...

Я больше ничего тебе отвечать не буду. Ты упорно игнорируешь мои предыдущие посты. Я привел ВСЕ ссылки, которые тебе нужны. Больше добавить нечего. Повторяю еще раз - я опять все переписывать не буду!!! Причем, заметь, переписывать из тех постов, на которые приведены ссылки! И переписывать практически один в один.

Автор: Ostin 27.04.2006 1:40

я все прочитал!(((
я чет ни как не пойму!(((( у меня ни это часть не работает не чего не выводится ни та программа про магазин не работает!((((

Автор: volvo 27.04.2006 3:12

Не понял... Что у тебя не выводится? В программе из твоего же 7-го поста не печатается ответ:
9 10 11
?
blink.gif Значит у тебя что-то с Паскалем... У меня вот эта программа откомпилировалась тремя разными компиляторами, и отработала после этого...

program mnoj;
Type TMySet = set of 0 .. 19; { 20 }

Var
saloon: array[1 .. 4] of TMySet; { 4 }
InAll, InNone: TMySet;
i: integer;
Begin

saloon[1] := [1, 3, 6 .. 11, 15];
saloon[2] := [2, 4, 6 .. 13, 19];
saloon[3] := [1, 4, 8 .. 11, 18];
saloon[4] := [1, 7, 9 .. 15, 16];

InAll := [0 .. 19]; InNone := [0 .. 19];

For i := 1 to 4 do begin
InAll := InAll * saloon[i];
InNone := InNone - saloon[i];
end;

Write('in all: ');
For i := 0 to 19 do
if i in InAll Then Write(i:3);
Writeln;

Write('in none: ');
For i := 0 to 19 do
if i in InNone Then Write(i:3);
Writeln;
readln;
End.

Автор: Ostin 27.04.2006 3:22

program mnoj;
uses crt;
Type TMySet = set of 0 .. 19; { 20 }

Var
saloon: array[1 .. 4] of TMySet; { 4 }
InAll, InNone: TMySet;
i: integer;
Begin
clrscr;
saloon[1] := [1, 3, 6 .. 11, 15];
saloon[2] := [1,2, 4, 6 .. 13, 19];
saloon[3] := [1, 4, 8 .. 11, 18];
saloon[4] := [1, 7, 9 .. 15, 16];

InAll := [0 .. 19]; InNone := [0 .. 19];

For i := 1 to 4 do begin
InAll := InAll * saloon[i];
InNone := InNone - saloon[i];
end;

Write('saloon[1]: ');
For i := 0 to 19 do
if i in saloon[1] Then Write(i:3);
Writeln;

Write('saloon[2]: ');
For i := 0 to 19 do
if i in saloon[2] Then Write(i:3);
Writeln;

Write('saloon[3]: ');
For i := 0 to 19 do
if i in saloon[3] Then Write(i:3);
Writeln;

Write('saloon[4]: ');
For i := 0 to 19 do
if i in saloon[4] Then Write(i:3);
Writeln;

writeln(' ');

Write('in all: ');
For i := 0 to 19 do
if i in InAll Then Write(i:3);
Writeln;



Write('in none: ');
For i := 0 to 19 do
if i in InNone Then Write(i:3);
Writeln;
readln;

End.

Автор: Ostin 1.05.2006 22:49

это не задача а сплошное мучение unsure.gif
как мне сделать чтоб можно было добавлять марки и удалять!? пожалуйста подскажите! !mol1.gif

Автор: Ostin 2.05.2006 21:32

в задаче про магазины нет добавления и удаления продуктов! подскажите и обьедините эти 3 сообшения в одно пизззззззззззззз!)