Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program laba31;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils;
- type
- Tset = set of Char;
- procedure InputStringsFromConsole(var Str1: string; var Str2: string);
- begin
- Writeln('Enter first string');
- Readln(Str1);
- Writeln('Enter second string');
- Readln(Str2);
- end;
- procedure InputStringsFromFile(var Str1: string; var Str2: string);
- var
- IsCorrectInput: Boolean;
- UserFile: TextFile;
- FileName: String;
- begin
- repeat
- IsCorrectInput := True;
- Writeln('Inter file location');
- Readln(FileName);
- if FileExists(FileName) then
- begin
- try
- Assign(UserFile, FileName);
- Reset(UserFile);;
- except
- Writeln('Ur File cant');
- IsCorrectInput := False
- end;
- if IsCorrectInput then
- begin
- if EoF(UserFile) then
- begin
- Writeln('File is empty, choose another file');
- IsCorrectInput := False;
- end
- else
- while not EoF(UserFile) do
- begin
- try
- Readln(UserFile, Str1);
- Readln(UserFile, Str2);
- except
- Writeln('Ivalid data, try again');
- IsCorrectInput := False;
- end;
- end;
- CloseFile(UserFile);
- end;
- end
- else
- begin
- Writeln('Ur file not found, try again');
- IsCorrectInput := False;
- end;
- until IsCorrectInput;
- end;
- procedure ChooseInput(var Str1: String; var Str2: String);
- var
- Symbol: Char;
- IsCorrect: Boolean;
- begin
- repeat
- IsCorrect := True;
- Writeln('If u want to input strings from console - enter "1"' + #10#13 + 'If u want to input strings from file - enter "2"' );
- Readln(Symbol);
- if (Symbol <> '1') and (Symbol <> '2') then
- begin
- Writeln('Ur input incorrect, try again');
- IsCorrect := False;
- end;
- until IsCorrect;
- if Symbol = '2' then
- InputStringsFromFile(Str1, Str2)
- else
- InputStringsFromConsole(Str1, Str2);
- end;
- procedure SetsOperations(OperationType: Char; Str1: string; Str2: string; var ResultSet: TSet);
- var
- FirstSet: TSet;
- SecondSet: TSet;
- i: Integer;
- begin
- FirstSet := [];
- SecondSet := [];
- ResultSet := [];
- for i := 1 to length(Str1) do
- FirstSet := FirstSet + [Str1 [i]];
- for i := 1 to length(Str2) do
- SecondSet := SecondSet + [Str2 [i]];
- if (OperationType = '1') then
- begin
- ResultSet := FirstSet * SecondSet
- end
- else
- ResultSet := (FirstSet + SecondSet) - (FirstSet * SecondSet);
- end;
- procedure OutputAnswerToConsole(AnswerSet: TSet);
- var
- ch: Char;
- begin
- if (AnswerSet = []) then
- WriteLn('Ur set is empty')
- else
- begin
- Writeln('Answer set is...');
- for ch := #0 to #255 do
- if (ch in AnswerSet) and (ch <> ' ') then
- Write(ch, ' ');
- end;
- Writeln;
- end;
- procedure OutputAnswerToFile(AnswerSet: TSet);
- var
- IsCorrectOutput: Boolean;
- ResFile: TextFile;
- FileName: string;
- ch: Char;
- begin
- repeat
- IsCorrectOutput := True;
- Writeln('Enter output file location');
- Readln(FileName);
- if FileExists(FileName) then
- begin
- try
- Assign(ResFile, FileName);
- Rewrite(ResFile);
- except
- Writeln('Ur file cant be opened');
- IsCorrectOutput := False;
- end;
- if IsCorrectOutput then
- begin
- if (AnswerSet = []) then
- Writeln(ResFile,'Подходящих значений нет.')
- else
- begin
- for ch := #0 to #255 do
- if (ch in AnswerSet)and (ch <> ' ') then
- WriteLn(ResFile, ch, ' ');
- end;
- Writeln('Successfully recorded');
- CloseFile(ResFile);
- end;
- end
- else
- begin
- Writeln('File not found, try again');
- IsCorrectOutput := False;
- end;
- until IsCorrectOutput;
- end;
- var
- FirstString, SecondString: String;
- IsCorrect: Boolean;
- OperationType: Char;
- ResultSet: TSet;
- begin
- Writeln('Theme: Two lines are given. Develop a procedure that, accordingа'+ #10#13 +' to the value of the first parameter, performsа'+ #10#13 +' the following operations on these lines: itа'+ #10#13 +' finds characters that occur in both lines, finds characters that occur only in the first line, only in the second line.');
- ChooseInput(FirstString, SecondString);
- Writeln(FirstString);
- Writeln(SecondString);
- repeat
- WriteLn('Choose operation:' + #10#13 + 'Enter ''1'' to choose intercaption ' + #10#13 + 'Enter ''2'' to choose difference ');
- ReadLn(OperationType);
- case OperationType of
- '1': IsCorrect := True;
- '2': IsCorrect := True;
- else Writeln('Ur input incorrect, try again');
- end;
- until IsCorrect;
- SetsOperations(OperationType, FirstString, SecondString, ResultSet);
- OutputAnswerToConsole(ResultSet);
- Writeln('Do u want to save ur set in file? (Y/N)');
- IsCorrect := False;
- repeat
- Readln(OperationType);
- OperationType := UpCase(OperationType);
- case OperationType of
- 'Y': IsCorrect := True;
- 'N': IsCorrect := True;
- else Writeln('Ur input incorrect, try again');
- end;
- until IsCorrect;
- if OperationType = 'Y' then
- OutputAnswerToFile(ResultSet);
- Writeln('End of programm');
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement