Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program lab2_2;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils;
- type
- Arr = array of Integer;
- Function TakeCoefficientValue: Integer;
- var
- IsCorrect: Boolean;
- Number: Integer;
- begin
- Write('Enter k value: ');
- Number := 0;
- repeat
- IsCorrect := True;
- try
- Readln(Number);
- except
- Write('Incorrect input!!!' + #13#10 + 'Enter k value: ');
- IsCorrect := False;
- end;
- if (IsCorrect and (Number < 1)) then
- begin
- Write('The number must be more than 0', #13#10, 'Enter k value: ');
- IsCorrect := False;
- end;
- until IsCorrect;
- TakeCoefficientValue := Number;
- end;
- Function FindNumberOfAnswers(Coefficient: Integer): Integer;
- const
- MAX = 1000000;
- var
- i, Current, FigureTotal, Counter: Integer;
- begin
- Counter := 0;
- for i := 1 to MAX do
- begin
- Current := i;
- FigureTotal := 0;
- while Current > 0 do
- begin
- FigureTotal := FigureTotal + Current mod 10;
- Current := Current div 10;
- end;
- if i = FigureTotal * Coefficient then
- Counter := Counter + 1;
- end;
- FindNumberOfAnswers := Counter;
- end;
- Function FindAnswers(Coefficient: Integer; NumberOfAnswers: Integer): Arr;
- const
- MAX = 1000000;
- var
- i, Counter, Current, FigureTotal: Integer;
- Answers: Arr;
- begin
- SetLength(Answers, NumberOfAnswers);
- Counter := 0;
- for i := 1 to max do
- begin
- Current := i;
- FigureTotal := 0;
- while Current > 0 do
- begin
- FigureTotal := FigureTotal + Current mod 10;
- Current := Current div 10;
- end;
- if i = FigureTotal * Coefficient then
- begin
- Answers[Counter] := i;
- Counter := Counter + 1;
- end;
- end;
- FindAnswers := Answers;
- end;
- Procedure Output(Arr: Array of Integer);
- var
- i: Integer;
- begin
- if (Length(Arr) = 0) then
- Writeln('Answers are not found.')
- else
- begin
- Writeln('Answers are:');
- for i := 0 to (Length(Arr) - 1) do
- Writeln(Arr[i]);
- end;
- end;
- var
- Coefficient, NumberOfAnswers, i: Integer;
- Answers: Arr;
- begin
- Writeln('Welcome to the program that outputs all numbers, which are equal to the sum of their digits multiplied by k');
- Coefficient := TakeCoefficientValue;
- NumberOfAnswers := FindNumberOfAnswers(Coefficient);
- Answers := FindAnswers(Coefficient, NumberOfAnswers);
- Output(Answers);
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement