Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Program Lab;
- uses
- System.SysUtils;
- Type
- TArray = Array of Array of Integer;
- Procedure OutputAnswer(Arr : TArray);
- Var
- Path : String;
- I, J, K : Integer;
- IsCorrect : Boolean;
- TextF : TextFile;
- Begin
- Writeln('Треугольник Паскаля: ');
- For I := 0 To High(Arr) Do
- Begin
- For K := (High(Arr) + 1 - I) Downto 0 Do
- Write(' ');
- For J := 0 To High(Arr[I]) Do
- Begin
- Write(Arr[I][J], ' ');
- End;
- Writeln;
- End;
- Repeat
- IsCorrect := True;
- Writeln('Введите путь файла для вывода: ');
- Try
- Readln(Path);
- AssignFile(TextF, Path);
- Reset(TextF);
- Except
- IsCorrect := False;
- Writeln('Неверный путь файла!');
- End;
- Until IsCorrect;
- Append(TextF);
- Writeln(TextF);
- Writeln(TextF, 'Треугольник Паскаля: ');
- For I := 0 To High(Arr) Do
- Begin
- For K := (High(Arr) + 1 - I) Downto 0 Do
- Write(TextF, ' ');
- For J := 0 To High(Arr[I]) Do
- Begin
- Write(TextF, Arr[I][J], ' ');
- End;
- Writeln(TextF);
- End;
- CloseFIle(TextF);
- Writeln('Данные записаны в файл.');
- Readln;
- End;
- Function ArrayCount(Size : Integer) : TArray;
- Var
- Arr : TArray;
- I, J, K : Integer;
- Begin
- SetLength(Arr, Size);
- Dec(Size);
- For I := 0 To Size Do
- Begin
- SetLength(Arr[I], I + 1);
- Arr[I][0] := 1;
- Arr[I][I] := 1;
- End;
- For I := 2 To Size Do
- Begin
- For J := 1 To (High(Arr[I]) - 1) Do
- Begin
- Arr[I][J] := Arr[I-1][J-1] + Arr[I-1][J];
- End;
- End;
- ArrayCount := Arr;
- End;
- Procedure OutputTask();
- Begin
- Writeln('Данная программа считает и выводит треугольник Паскаля.');
- End;
- Function PathChoice() : String;
- Var
- Path : String;
- TextF : TextFile;
- IsCorrect : Boolean;
- Begin
- Repeat
- IsCorrect := True;
- Writeln('Введите путь файла: ');
- Try
- Readln(Path);
- AssignFile(TextF, Path);
- Reset(TextF);
- Except
- IsCorrect := False;
- End;
- If (Not IsCorrect Or (Path[Length(Path)] <> 't') And (Path[Length(Path) - 1] <> 'x') And (Path[Length(Path) - 2] <> 't') And (Path[Length(Path) - 3] <> '.')) Then
- Begin
- Writeln('Неверный путь файла!');
- IsCorrect := False;
- End;
- Until IsCorrect;
- Writeln('Файл успешно открыт!');
- CloseFile(TextF);
- PathChoice := Path;
- End;
- Function InputSizeFromConsole() : Integer;
- Var
- IsCorrect : Boolean;
- Size : Integer;
- Begin
- Repeat
- Writeln('Введите количество строк треугольника Паскаля, необходимых для вывода: ');
- IsCorrect := True;
- Try
- Readln(Size);
- Except
- IsCorrect := False;
- End;
- If ((Not IsCorrect) Or (Size < 1)) Then
- Begin
- Writeln('Ошибка! Введите корректный размер.');
- IsCorrect := False;
- End;
- Until IsCorrect;
- InputSizeFromConsole := Size;
- End;
- Function InputSizeFromFile(Path : String) : Integer;
- Var
- IsCorrect : Boolean;
- Size : Integer;
- InputFile : TextFile;
- Begin
- AssignFile(InputFile, Path);
- Reset(InputFile);
- IsCorrect := True;
- Try
- Read(InputFile, Size);
- Except
- IsCorrect := False;
- End;
- If ((Not IsCorrect) Or (Size < 1)) Then
- Begin
- Writeln('Ошибка! Введите корректный размер с консоли.');
- Size := InputSizeFromConsole();
- End;
- CloseFIle(InputFile);
- InputSizeFromFile := Size;
- End;
- Function InputFromFile() : Integer;
- Var
- Arr : TArray;
- Path : String;
- Size : Integer;
- Begin
- Writeln('При вводе с файла учтите, что на ПЕРВОЙ строке должно быть записано количество строк, необходимых для вывода.');
- Path := PathChoice();
- Size := InputSizeFromFIle(Path);
- InputFromFile := Size;
- End;
- Function SourceChoice() : Integer;
- Var
- ChoiceNumber : Integer;
- IsCorrect : Boolean;
- Size : Integer;
- Begin
- Repeat
- IsCorrect := True;
- Writeln('Выберите, откуда будут вводиться данные. 0, если с консоли; 1, если с файла.');
- Try
- Readln(ChoiceNumber);
- Except
- IsCorrect := False;
- End;
- If ((Not IsCorrect) Or ((ChoiceNumber <> 0) And (ChoiceNumber <> 1 ))) Then
- Begin
- IsCorrect := False;
- Writeln('Некорректный ввод данных!');
- End;
- Until IsCorrect;
- If (ChoiceNumber = 0) Then
- Size := InputSizeFromConsole()
- Else
- Size := InputFromFile();
- SourceChoice := Size;
- End;
- Var
- Arr : TArray;
- Size : Integer;
- Begin
- OutputTask();
- Size := SourceChoice();
- Arr := ArrayCount(Size);
- OutputAnswer(Arr);
- End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement