Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Mnogestva;
- uses
- System.SysUtils;
- type
- Mnogestv = set of 1..200;
- function Check(var InputPeremenn: byte): byte;
- var
- i: Byte;
- IsCorrect: Boolean;
- begin
- IsCorrect := True;
- repeat
- try
- Readln(InputPeremenn);
- if ((InputPeremenn > 0) and (InputPeremenn < 255)) then
- IsCorrect := True
- else
- begin
- IsCorrect := False;
- WriteLn('Ошибка ввода.Введите заново данный элемент')
- end;
- except
- IsCorrect := False;
- WriteLn('Ошибка ввода.Введите заново данный элемент')
- end;
- until IsCorrect;
- Check := InputPeremenn;
- end;
- function GetMnogest(var MnName: Mnogestv) :Mnogestv;
- var
- Size, Number, i: byte;
- begin
- MnName := [];
- Size := Check(Size);
- for i := 1 to Size do
- begin
- WriteLn('Введите ',i,' элемент множества');
- Number := Check(Number);
- MnName := MnName + [Number];
- end;
- GetMnogest := MnName;
- end;
- procedure FindThatINeed(ResultSet:Mnogestv);
- var
- i, Num: byte;
- begin
- Num := 0;
- Write('Элементы множества Y, которые делятся на 3 без остатка:');
- for i := 3 to 255 do
- if (i in ResultSet) and (i mod 3 = 0) then
- begin
- Num := i;
- Write(i,' ');
- end;
- if Num = 0 then
- WriteLn('Нет подходящих чисел!')
- else
- WriteLn;
- end;
- procedure IfInResult(var ResultSet, ThirdSet: Mnogestv);
- var
- i, Num, k: byte;
- IsCorrect: boolean;
- begin
- if ResultSet <= ThirdSet then
- WriteLn('Множествo Х3 находится во множестве Y')
- else
- WriteLn('Множествo Х3 Во множестве Y не находится');
- end;
- function Console(FirstSet, SecondSet, ThirdSet, ResultSet: Mnogestv):Mnogestv;
- begin
- WriteLn('Введите количество элементов в 1 множестве:');
- FirstSet := GetMnogest(FirstSet);
- WriteLn('Введите количество элементов вo 2 множестве:');
- SecondSet := GetMnogest(SecondSet);
- ResultSet := FirstSet * SecondSet;
- FindThatINeed(ResultSet);
- WriteLn('Введите количество элементов в 3 множестве:');
- ThirdSet := GetMnogest(ThirdSet);
- IfInResult(ResultSet, ThirdSet);
- Console := ResultSet;
- end;
- function FromFile(): Mnogestv;
- var
- FirstSet, SecondSet, ThirdSet, ResultSet: Mnogestv;
- Name: String;
- IsCorrect: boolean;
- input: text;
- Num: byte;
- begin
- FirstSet := [];
- SecondSet := [];
- ThirdSet := [];
- ResultSet := [];
- repeat
- WriteLn('Введите название файла:');
- ReadLn(Name);
- Name := Name + '.txt';
- IsCorrect := True;
- try
- Assign(Input,Name);
- Reset(Input);
- if not(eof(Input)) then
- IsCorrect := True
- else
- begin
- IsCorrect := False;
- WriteLn('Данный файл пуст.Попробуйте другой.');
- end;
- while (not Eof(Input)) do
- begin
- while (not Eoln(Input)) do
- begin
- Read(Input, Num);
- FirstSet := FirstSet + [Num];
- end;
- Readln(Input);
- while (not Eoln(Input)) do
- begin
- Read(Input, Num);
- SecondSet := SecondSet + [Num];
- end;
- Readln(Input);
- while (not Eoln(Input)) do
- begin
- Read(Input, Num);
- ThirdSet := ThirdSet + [Num];
- end;
- end;
- except
- IsCorrect := False;
- WriteLn('Название введено неправильно.Попробуйте еще раз.');
- end;
- until IsCorrect;
- CloseFile(input);
- ResultSet := SecondSet * FirstSet ;
- FindThatINeed(ResultSet);
- IfInResult(ResultSet, ThirdSet);
- FromFile := ResultSet;
- end;
- procedure WritetoFile(ResultSet: Mnogestv);
- var
- Output: text;
- i, Num: byte;
- begin
- Assign(Output,'C:\Users\nikita\Desktop\ResultMnog.txt');
- Reset(Output);
- Rewrite(Output);
- Num := 0;
- Write(Output,'Элементы множества Y, которые делятся на 3 без остатка:');
- for i := 3 to 255 do
- if (i in ResultSet) and (i mod 3 = 0) then
- begin
- Num := i;
- Write(Output,i,' ');
- end;
- if Num = 0 then
- WriteLn(Output,'Нет подходящих чисел!')
- else
- WriteLn;
- WriteLn('Записано!');
- Close(Output);
- end;
- procedure Main;
- var
- FirstSet, SecondSet, ThirdSet, ResultSet: Mnogestv;
- Thing, Place: string;
- IsCorrect: boolean;
- begin
- WriteLn('Данная программа формирует множество Y = X1 U X2 и выводит элементы Y,которые делятся на 3 без остатка.');
- repeat
- WriteLn('Если вы хотите считать множество с файла,то напишите:F');
- WriteLn('Если вы хотите считать множество с консоли, то напишите:C');
- try
- ReadLn(Thing);
- if (Thing = 'F') or (Thing = 'f') then
- begin
- IsCorrect := True;
- ResultSet := FromFile();
- end
- else
- if (Thing = 'C') or (Thing = 'c') then
- begin
- IsCorrect := True;
- ResultSet := Console(FirstSet,SecondSet,ThirdSet,ResultSet);
- end
- else
- begin
- IsCorrect := False;
- WriteLn('Ошибка ввода.Введите заново!')
- end;
- except
- IsCorrect := False;
- WriteLn('Ошибка ввода.Введите заново!')
- end;
- until IsCorrect;
- repeat
- WriteLn('Если вы хотите записать результат в файл,то напишите:Y');
- WriteLn('Если нет,то напишите:N');
- try
- ReadLn(Place);
- if (Place = 'Y') or (Place = 'y') then {C:\Users\nikita\Desktop\ResultMnog.txt }
- begin
- IsCorrect := True;
- WriteToFile(ResultSet);
- end
- else
- if (Place = 'N') or (Place = 'n') then
- begin
- IsCorrect := True;
- end
- else
- begin
- IsCorrect := False;
- WriteLn('Ошибка ввода.Введите заново!')
- end;
- except
- IsCorrect := False;
- WriteLn('Ошибка ввода.Введите заново!')
- end;
- until IsCorrect;
- Readln;
- ReadLn;
- end;
- begin
- Main;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement