Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program Laba3_1;
- {$APPTYPE CONSOLE}
- {$R *.res}
- uses
- System.SysUtils;
- type
- TIntArray = Array of Integer;
- TStringArray = Array of String;
- const
- MIN = 0;
- MAX = 5;
- function GetLength(): Integer;
- var SizeOfArray: Integer;
- IsCorrect: Boolean;
- begin
- IsCorrect:= False;
- repeat
- Writeln('Сколько чисел вы хотите ввести? Введите число от 1 до 4');
- try
- Readln(SizeOfArray);
- IsCorrect:= True;
- except
- Writeln('Введите целое число, пожалуйста');
- end;
- until(IsCorrect and (SizeOfArray > MIN) and (SizeOfArray < MAX));
- GetLength:= SizeOfArray;
- end;
- function GetNumbersFromFile(): String;
- var
- Input: TextFile;
- IsInvalidInput: Boolean;
- Text, Path: String;
- begin
- Writeln('Введите, пожалуйста, путь к файлу');
- Readln(Path);
- AssignFile(Input, Path);
- Read(Input, Text);
- Writeln(Text);
- GetNumbersFromFile:= Text;
- end;
- function Split(Border, S: String): TIntArray;
- var
- SubStr: TStringArray;
- ResultStr: TIntArray;
- S2: String;
- i: Integer;
- begin
- SetLength(SubStr, 4);
- i := 0;
- S2 := S + Border;
- repeat
- SubStr[i]:= copy(S2, 1 , pos(' ', S2)- 1);
- delete(S2, 1, pos(' ', S2));
- ResultStr[i] := StrToInt(SubStr[i]);
- Writeln(ResultStr[i]);
- Inc(i);
- until S2 = ' ';
- Split:= ResultStr;
- end;
- function IntegerToRomanConverting(Input: Integer): String;
- var
- ResultOfConverting: String;
- begin
- if ((Input < 1) or (Input > 2000)) then
- IntegerToRomanConverting := 'Invalid Roman Number Value';
- while (input >= 1000) do
- begin
- ResultOfConverting := ResultOfConverting + 'M';
- Input := Input - 1000;
- end;
- while (Input >= 900) do
- begin
- ResultOfConverting := ResultOfConverting + 'CM';
- Input := Input - 900;
- end;
- while (Input >= 500) do
- begin
- ResultOfConverting := ResultOfConverting + 'D';
- Input := Input - 500;
- end;
- while (Input >= 400) do
- begin
- ResultOfConverting := ResultOfConverting + 'CD';
- Input := Input - 400;
- end;
- while (Input >= 100) do
- begin
- ResultOfConverting := ResultOfConverting + 'C';
- Input := Input - 100;
- end;
- while (Input >= 90) do
- begin
- ResultOfConverting := ResultOfConverting + 'XC';
- Input := Input - 90;
- end;
- while (Input >= 50) do
- begin
- ResultOfConverting := ResultOfConverting + 'L';
- Input := Input - 50;
- end;
- while (Input >= 40) do
- begin
- ResultOfConverting := ResultOfConverting + 'XL';
- Input := Input - 40;
- end;
- while (Input >= 10) do
- begin
- ResultOfConverting := ResultOfConverting + 'X';
- Input := Input - 10;
- end;
- while (Input >= 9) do
- begin
- ResultOfConverting := ResultOfConverting + 'IX';
- Input := Input - 9;
- end;
- while (Input >= 5) do
- begin
- ResultOfConverting := ResultOfConverting + 'V';
- Input := Input - 5;
- end;
- while (Input >= 4) do
- begin
- ResultOfConverting := ResultOfConverting + 'IV';
- Input := Input - 4;
- end;
- while (Input >= 1) do
- begin
- ResultOfConverting := ResultOfConverting + 'I';
- Input := Input - 1;
- end;
- IntegerToRomanConverting := ResultOfConverting;
- end;
- var
- SizeOfArray, i, k: Integer;
- IsCorrect: Boolean;
- ArrayOfNumber: TIntArray;
- OutputToTheFile, SNumbers: String;
- InputKeyboardOrFile: Char;
- ResultOfConverting: TStringArray;
- begin
- Writeln('Эта программа может переводить от 1 до 4 чисел в римскую систему счисления ');
- Writeln('Числа должны быть целыми и вводится через пробел');
- SizeOfArray := GetLength;
- SetLength(ArrayOfNumber, SizeOfArray);
- SetLength(ResultOfConverting, SizeOfArray);
- Writeln('Если ввод будет осуществляться с клавиатуры, напишите букву K, если из файла - напишите F');
- Readln(InputKeyboardOrFile);
- IsCorrect:= False;
- repeat
- case InputKeyboardOrFile of
- 'K':
- begin
- Writeln('Введите целые числа от 1 до 2000 через пробел. Чисел может быть от 1 до 4');
- Readln(SNumbers);
- IsCorrect := true;
- end;
- 'F':
- begin
- SNumbers := GetNumbersFromFile();
- IsCorrect := true;
- end;
- else
- Writeln('Пожалуйста, введите K или F');
- end;
- until(IsCorrect);
- ArrayOfNumber := Split(' ', SNumbers);
- for i:=0 to SizeOfArray do
- begin
- ResultOfConverting[i] := IntegerToRomanConverting(ArrayOfNumber[i]);
- Writeln(ArrayOfNumber[i], ' = ', ResultOfConverting[i]);
- end;
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment