Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Laba2_2;
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- type
- TArr = array of Integer;
- const
- OutputFileName = 'output.txt';
- INputFileName= 'input.txt';
- var
- Range: Integer;
- function IsCorrectInput(var Number: Integer; const Min, Max: Integer): Integer;
- var
- IsCorrect: boolean;
- begin
- IsCorrect := False;
- repeat
- try
- Readln(Number);
- if (Number < Min) or (Max < Number) then
- Writeln('The number must be between ', Min, ' and ', Max, '!')
- else
- IsCorrect:= True;
- except
- Write('Error! Enter a number: ');
- end;
- until IsCorrect;
- Result := Number;
- end;
- procedure FindFriendshipNumbers(var Range: integer; var Numbers: TArr);
- var
- del:array of integer;
- i, j, k, p: integer;
- begin
- SetLength(del, Range);
- for k := 2 to Range do
- del[k] := 1 + k;
- for k := 2 to Range div 2 do
- begin
- p := k + k;
- while p < Range + 1 do
- begin
- del[p] := del[p] + k;
- p:= p + k;
- end;
- end;
- for i := 2 to Range - 1 do
- for j := i + 1 to Range do
- if (del[i] = i + j) and (del[j] = i + j)then
- begin
- SetLength(Numbers, Length(Numbers) + 2);
- Numbers[High(Numbers) - 1] := i;
- Numbers[High(Numbers)] := j;
- end;
- end;
- procedure OutputConsole(const Numbers: TArr);
- var
- i: Integer;
- begin
- i := 0;
- while i < Length(Numbers) do
- begin
- Writeln(Numbers[i],' | ', Numbers[i + 1]);
- Inc(i, 2);
- end;
- end;
- procedure OutputFile(const Numbers: TArr);
- var
- UserFile: TextFile;
- i: Integer;
- begin
- AssignFile(UserFile, OutputFileName);
- Rewrite(UserFile);
- i := 0;
- while i < Length(NUmbers) do
- begin
- Writeln(UserFile, Numbers[i], ' | ', Numbers[i + 1]);
- Inc(i, 2);
- end;
- CloseFile(UserFile);
- end;
- procedure InputFile(var Range: Integer);
- var
- UserFile: TextFile;
- begin
- AssignFile(UserFile, InputFileName);
- Reset(UserFile);
- Read(UserFile, Range);
- CloseFile(UserFile);
- end;
- function GetUserChoice: Char;
- var
- Choice: Char;
- begin
- Writeln('Do you want to read from file?[Y/N]');
- Readln(Choice);
- GetUserChoice := Choice;
- end;
- procedure Main();
- var
- Numbers: TArr;
- Answer: Char;
- begin
- Writeln('This program finds pairs of friendly numbers.');
- //Write('Enter the top of the friendly number range: ');
- Answer := getUserChoice;
- if Answer = 'Y' then
- begin
- InputFile(Range);
- Writeln(Range);
- end
- else
- begin
- Writeln('Enter the upper limit of the friendly number search range.');
- Writeln('The number must be up to 10.000 !');
- IsCorrectInput(Range, 2, 10000);
- end;
- FindFriendshipNumbers(Range, Numbers);
- OutputConsole(Numbers);
- OutputFile(Numbers);
- Readln;
- end;
- begin
- Main
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement