CARVIEW |
Select Language
HTTP/2 200
date: Sat, 11 Oct 2025 16:24:06 GMT
content-type: text/html; charset=UTF-8
server: cloudflare
x-frame-options: DENY
x-content-type-options: nosniff
x-xss-protection: 1;mode=block
vary: accept-encoding
cf-cache-status: DYNAMIC
content-encoding: gzip
set-cookie: _csrf-frontend=ea4d919635dd76583a6fc84343d13cea16b1bd0cff041f3ed41b6510e34ef6cda%3A2%3A%7Bi%3A0%3Bs%3A14%3A%22_csrf-frontend%22%3Bi%3A1%3Bs%3A32%3A%22Q6Ma7N2ENO1ZOzF7cENJvWgg7PbNk_Ga%22%3B%7D; HttpOnly; Path=/
cf-ray: 98cfb4abe9608839-BLR
Lab3Challenge2Delphi - Pastebin.com
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Lab3Challenge2;
- {$APPTYPE CONSOLE}
- {$R *.res}
- Uses
- System.SysUtils;
- Const
- DEFAULT_INPUT_FILE = './input.txt';
- DEFAULT_OUTPUT_FILE = './output.txt';
- PRINT_TYPE_MIN = 0;
- PRINT_TYPE_MAX = 2;
- SCAN_TYPE_MIN = 0;
- SCAN_TYPE_MAX = 1;
- Function Calculate(Const Value: String): String;
- Var
- I: Integer;
- Res: String;
- Symbols: Set Of AnsiChar;
- Begin
- Symbols := ['+', '-', '*', '/', '.', ',', '=', '^', '%', '0', '2', '4', '6', '8'];
- For I := 1 To Length(Value) Do
- Begin
- If (CharinSet(Value[I], Symbols)) Then
- Res := Res + Value[I];
- End;
- Calculate := Res;
- End;
- Function IsTextFile(Const FilePath: String): Boolean;
- Var
- IsTxt: Boolean;
- Len: Integer;
- Begin
- Len := Length(FilePath);
- IsTxt := ((Len > 2) And (FilePath[Len - 3] = '.') And (FilePath[Len - 2] = 't') And (FilePath[Len - 1] = 'x') And
- (FilePath[Len] = 't'));
- IsTextFile := IsTxt;
- End;
- Function CheckFileAvailability(Const FilePath: String; Read: Boolean): Boolean;
- Var
- IsAvailable: Boolean;
- Checkable: TextFile;
- Begin
- IsAvailable := True;
- AssignFile(Checkable, FilePath);
- Try
- If (Read) Then
- Reset(Checkable)
- Else
- Begin
- If (FileExists(FilePath)) Then
- Append(Checkable)
- Else
- Rewrite(Checkable);
- End;
- Close(Checkable);
- Except
- IsAvailable := False;
- End;
- If (IsAvailable And Not IsTextFile(FilePath)) Then
- IsAvailable := False;
- CheckFileAvailability := IsAvailable;
- End;
- Function TakeIntValueFromConsole(Const Description: String): Integer;
- Var
- Value: Integer;
- IsCorrect: Boolean;
- Begin
- IsCorrect := False;
- Value := 0;
- Repeat
- Write(Description);
- Try
- Readln(Value);
- IsCorrect := True;
- Except
- Writeln('Enter number, not string or anything else!');
- End;
- Until IsCorrect;
- TakeIntValueFromConsole := Value;
- End;
- Function TakeIntValueInRangeFromConsole(Const Description: String; Min: Integer; Max: Integer): Integer;
- Var
- Value: Integer;
- IsCorrect: Boolean;
- Begin
- Repeat
- Value := TakeIntValueFromConsole(Description);
- IsCorrect := True;
- If ((Value < Min) Or (Value > Max)) Then
- Begin
- Writeln('Value must be in range from ', Min, ' to ', Max, '!');
- IsCorrect := False;
- End;
- Until IsCorrect;
- TakeIntValueInRangeFromConsole := Value;
- End;
- Procedure TakeCorrectFile(Var FileToAssign: TextFile; Input: Boolean);
- Var
- FilePath: String;
- IsCorrect: Boolean;
- Begin
- Repeat
- Var
- DefaultFilePath := DEFAULT_OUTPUT_FILE;
- If (Input) Then
- Begin
- Write('Enter path to input file (when empty - ', DEFAULT_INPUT_FILE, '): ');
- DefaultFilePath := DEFAULT_INPUT_FILE;
- End
- Else
- Write('Enter path to output file (when empty - ', DEFAULT_OUTPUT_FILE, '): ');
- ReadLn(FilePath);
- If (FilePath = '') Then
- FilePath := DefaultFilePath;
- IsCorrect := True;
- If (Not CheckFileAvailability(FilePath, Input)) Then
- Begin
- IsCorrect := False;
- WriteLn('This path contains wrong file or file, which cannot be accessed! Enter another path!');
- End;
- Until IsCorrect;
- AssignFile(FileToAssign, FilePath);
- If (Input) Then
- Reset(FileToAssign)
- Else
- Rewrite(FileToAssign);
- End;
- Function ReadStringFromFile(): String;
- Var
- Val: String;
- FileToRead: TextFile;
- IsCorrect: Boolean;
- Begin
- Repeat
- TakeCorrectFile(FileToRead, True);
- ReadLn(FileToRead, Val);
- IsCorrect := True;
- If (Length(Val) = 0) Then
- Begin
- IsCorrect := False;
- WriteLn('String cannot be empty!');
- End;
- Until IsCorrect;
- ReadStringFromFile := Val;
- End;
- Function ReadStringFromConsole(): String;
- Var
- Val: String;
- IsCorrect: Boolean;
- Begin
- Repeat
- Write('Enter string to calculate: ');
- ReadLn(Val);
- IsCorrect := True;
- If (Length(Val) = 0) Then
- Begin
- IsCorrect := False;
- WriteLn('String cannot be empty!');
- End;
- Until IsCorrect;
- ReadStringFromConsole := Val;
- End;
- Function ReadString(): String;
- Var
- ReadType: Integer;
- Val: String;
- Begin
- WriteLn;
- WriteLn('How to read values for calculations?');
- WriteLn('0 - From keyboard (console)');
- WriteLn('1 - From file');
- ReadType := TakeIntValueInRangeFromConsole('Enter read type: ', SCAN_TYPE_MIN, SCAN_TYPE_MAX);
- If (ReadType = 1) Then
- Val := ReadStringFromFile()
- Else
- Val := ReadStringFromConsole();
- ReadString := Val;
- End;
- Function SaveResultIntoFile(Const Val: String): Boolean;
- Var
- Saved: Boolean;
- FileToSave: TextFile;
- I: Integer;
- Begin
- Saved := True;
- TakeCorrectFile(FileToSave, False);
- Write(FileToSave, Val);
- Close(FileToSave);
- SaveResultIntoFile := Saved;
- End;
- Procedure PrintResult(Const Val: String);
- Var
- WriteType: Integer;
- Saved: Boolean;
- Begin
- Saved := False;
- WriteLn;
- WriteLn('Where post result?');
- WriteLn('0 - Only into console');
- WriteLn('1 - Only into file');
- WriteLn('2 - Into console and into file');
- WriteType := TakeIntValueInRangeFromConsole('Enter write type: ', PRINT_TYPE_MIN, PRINT_TYPE_MAX);
- Case WriteType Of
- 0:
- Begin
- WriteLn;
- WriteLn('Set of arithmetic signs and even numbers: ', Val);
- End;
- 1:
- Begin
- Saved := SaveResultIntoFile(Val);
- End;
- 2:
- Begin
- Saved := SaveResultIntoFile(Val);
- WriteLn;
- WriteLn('Set of arithmetic signs and even numbers: ', Val);
- End;
- End;
- If (Saved) Then
- WriteLn('Result saved into file!');
- End;
- Begin
- Var Input, Res: String;
- WriteLn('2. Given a non-empty sequence of symbols, it is required to construct and print a set whose elements are the signs of arithmetic operations and even numbers found in the sequence.');
- Input := ReadString();
- Res := Calculate(Input);
- PrintResult(Res);
- WriteLn('Press [ENTER] to close program...');
- ReadLn;
- End.
Advertisement
Add Comment
Please, Sign In to add comment
-
⭐✅ Exploit 2500$ in 15 Minutes⭐⭐⭐ 7
JavaScript | 1 sec ago | 0.24 KB
-
⭐⭐⭐MAKE $900 INSTANTLY⭐⭐
Java | 5 sec ago | 0.10 KB
-
⭐ Instant BTC Profit Method ✅ NEVER SEEN BEFO...
JavaScript | 8 sec ago | 0.24 KB
-
⭐✅ Exploit 2500$ in 15 Minutes⭐⭐⭐ E
JavaScript | 9 sec ago | 0.24 KB
-
Free Crypto Method (NEVER SEEN BEFORE)⭐⭐ 0
JavaScript | 12 sec ago | 0.24 KB
-
⭐✅ MAKE $2000 INSTANTLY ✅ NEVER SEEN BEFORE ⭐...
JavaScript | 17 sec ago | 0.24 KB
-
⭐⭐⭐Exchange Exploit⭐⭐
Java | 17 sec ago | 0.10 KB
-
Free Crypto Method (NEVER SEEN BEFORE)⭐⭐ M
JavaScript | 20 sec ago | 0.24 KB
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand