Advertisement
THOMAS_SHELBY_18

Lab2_3(Delphi) without good checking

Oct 22nd, 2023
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.96 KB | Source Code | 0 0
  1. Program Lab2_3;
  2.  
  3. Uses
  4.   System.SysUtils;
  5.  
  6. Type
  7.     TMatrix = Array of Array of Integer;
  8.  
  9. Const
  10.     MIN_N = 1;
  11.     MAX_N = 10;
  12.  
  13. Var
  14.     ChoiceOutput: Integer;
  15.     Matrix: TMatrix;
  16.  
  17. Function GetNum(Min, Max: Integer): Integer;
  18. Var
  19.     Num: Integer;
  20.     IsCorrect: Boolean;
  21. Begin
  22.     Repeat
  23.         IsCorrect := True;
  24.         Try
  25.             Readln(Num)
  26.         Except
  27.             Write('Некорректный ввод! Введите значение еще раз: ');
  28.             IsCorrect := False;
  29.         End;
  30.         If (IsCorrect) And ((Num < Min) Or (Num > Max)) Then
  31.         Begin
  32.             Write('Недопустимое значение! Введите значение еще раз: ');
  33.             IsCorrect := False;
  34.         End;
  35.     Until (IsCorrect);
  36.     GetNum := Num;
  37. End;
  38.  
  39. Procedure FillMatrix(Var Matrix: TMatrix);
  40. Var
  41.     N, I, J, Counter: Integer;
  42. Begin
  43.     Writeln('Введите порядок матрицы N от ', MIN_N, ' до ', MAX_N, ': ');
  44.     N := GetNum(MIN_N, MAX_N);
  45.  
  46.     SetLength(Matrix, N, N);
  47.     Dec(N);
  48.     I := 0;
  49.     Counter := 1;
  50.  
  51.     Repeat
  52.         If I Mod 2 = 0 Then
  53.         Begin
  54.             For J := 0 To High(Matrix) Do
  55.             Begin
  56.                 Matrix[I][J] := Counter;
  57.                 Inc(Counter);
  58.             End;
  59.         End
  60.         Else
  61.         Begin
  62.             For J := High(Matrix) DownTo 0 Do
  63.             Begin
  64.                 Matrix[I][J] := Counter;
  65.                 Inc(Counter);
  66.             End;
  67.         End;
  68.         Inc(I);
  69.     Until (I > N);
  70. End;
  71.  
  72. Function CheckPath(Path: String): Boolean;
  73. Begin
  74.     If FileExists(Path) Then
  75.     Begin
  76.         CheckPath := True;
  77.     End
  78.     Else
  79.     Begin
  80.         Writeln('Вы ввели несуществующий путь! Проверьте корректность данных и попробуйте еще раз!');
  81.         CheckPath := False;
  82.     End;
  83. End;
  84.  
  85. Procedure OutputMatrix (Choice: Integer; Var Matrix: TMatrix);
  86. Var
  87.     I,J: Integer;
  88.     OutputFile: TextFile;
  89.     Path: String;
  90.     IsPathCorrect: Boolean;
  91. Begin
  92.     If Choice = 1 Then
  93.     Begin
  94.         Writeln('Результат:');
  95.         For I := 0 To High(Matrix) Do
  96.         Begin
  97.             For J := 0 To High(Matrix) Do
  98.             Begin
  99.                 Write(Matrix[I][J]:5);
  100.             End;
  101.             Writeln(#10);
  102.         End;
  103.     End
  104.     Else
  105.     Begin
  106.     Writeln('Введите путь к файлу для вывода (например, F:\Projects\Matrix\[Имя файла].txt). Если файл отсутствует то он будет создан автоматически по указанному пути или в корневой папке программы (по умолчанию)');
  107.         Repeat
  108.             Write('Введите путь: ');
  109.             Readln(Path);
  110.             AssignFile(OutputFile, Path);
  111.             Try
  112.                 Rewrite(OutputFile);
  113.                 IsPathCorrect := True;
  114.                 For I := 0 To High(Matrix) Do
  115.                 Begin
  116.                     For J := 0 To High(Matrix) Do
  117.                     Begin
  118.                         Write(OutputFile, Matrix[I][J]:5);
  119.                     End;
  120.                     Writeln(OutputFile, #10);
  121.                 End;
  122.             Except
  123.                 Writeln('Не удалось вывести в Файл');
  124.                 IsPathCorrect := False;
  125.             End;
  126.             CloseFile(OutputFile);
  127.         Until IsPathCorrect;
  128.         Writeln('Вывод данных...  успешно!');
  129.     End;
  130. End;
  131.  
  132. Begin
  133. Writeln('Данная программа заполнит матрицу чисел "змейкой"');
  134. FillMatrix(Matrix);
  135. Write('Выберите вариант вывода:', #10, '1. Вывод в консоль', #10, '2. Вывод в файл', #10, 'Использовать вариант: ');
  136. ChoiceOutput := GetNum(1,2);
  137. OutputMatrix(ChoiceOutput, Matrix);
  138. Readln;
  139.  
  140. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement