Advertisement
dxvmxnd

Untitled

Oct 23rd, 2023 (edited)
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.13 KB | None | 0 0
  1. Program L2_4_D;
  2.  
  3. uses
  4. System.SysUtils;
  5.  
  6. Var
  7. Length, Size, I, MaxR, Res : Integer;
  8. A : Array of Integer;
  9. IsCorrect : Boolean;
  10. Choise : String;
  11.  
  12. Function CoutNumber(Arr : Array of Integer) : Integer;
  13.  
  14. Begin
  15. Res := 0;
  16. Result := 0;
  17.  
  18. For I := 0 To Length Do
  19. Begin
  20. If (Arr[I] = 1) Then
  21. Begin
  22. Res := Res + 1;
  23. End
  24. Else
  25.  
  26. Begin
  27. If (Result < Res) Then
  28. Begin
  29. Result := Res;
  30. Res := 0;
  31. End
  32. Else Res := 0;
  33. End;
  34. End;
  35. If (Result < Res) Then
  36. Begin
  37. Result := Res;
  38. End;
  39. End;
  40.  
  41. Procedure FromConsole;
  42.  
  43. Begin
  44.  
  45. Repeat
  46. IsCorrect := True;
  47. Write('Введите колличество элементов массива: ');
  48. Try
  49. Readln(Size);
  50. Except
  51. IsCorrect := False;
  52. Writeln('Неверный тип данных!');
  53. End;
  54. Until IsCorrect;
  55.  
  56. Length := Size - 1;
  57. SetLength(A, Size);
  58.  
  59. For I := 0 To Length Do
  60. Begin
  61. Repeat
  62. IsCorrect := True;
  63. Write('Введите ', I+1, ' элемент массива: ');
  64. Try
  65. Readln(A[I]);
  66. Except
  67. IsCorrect := False;
  68. Writeln('Неверный тип данных!');
  69. End;
  70. Until IsCorrect;
  71. End;
  72.  
  73. MaxR := CoutNumber(A);
  74. Writeln('Максимальное количество единиц, идущих подряд: ', MaxR);
  75. End;
  76.  
  77. Procedure FromFile;
  78.  
  79. Begin
  80.  
  81. Var
  82. TextFile : TextFile;
  83.  
  84. Begin
  85. Writeln('При записи данных из файла, учтите, что на первой строке написано количество чисел, а далее с новой строки прописываются элементы массива.');
  86.  
  87. AssignFile(TextFile, 'C:\Users\Рустамчик\Desktop\ЛАБА 2\Дельфи\4\input.txt');
  88. Reset(TextFile);
  89. IsCorrect := True;
  90. Writeln('Запись размера массива...');
  91. Try
  92. Readln(TextFile, Size);
  93. Except
  94. IsCorrect := False;
  95. End;
  96. If (Size < 1) Then
  97. Begin
  98. IsCorrect := False;
  99. Writeln('Ошибка! Неверный ввод размера! Измените входные данные в input.txt, затем перезапустите программу.');
  100. End;
  101.  
  102. Length := Size - 1;
  103. SetLength(A, Size);
  104.  
  105. For I := 0 To Length do
  106. Begin
  107. Try
  108. Readln(A[I]);
  109. Except
  110. IsCorrect := False;
  111. Writeln(' Неверный ввод данных! Измените ', I+2, ' строку файла и повторите попытку!');
  112. End;
  113. End;
  114.  
  115. MaxR := CoutNumber(A);
  116.  
  117. Rewrite(TextFile);
  118. Writeln(TextFile, MaxR);
  119.  
  120. Writeln('Максимальное количество единиц, идущих подряд: ', MaxR);
  121. Writeln('Данные записаны в файл.');
  122.  
  123. CloseFile(TextFile);
  124.  
  125. End;
  126. End;
  127.  
  128.  
  129. Begin
  130. Writeln('Данная программа определяет максимальное количество единиц, идущих подряд среди массива чисел.');
  131. Writeln('Выберите, откуда будут вводиться данные:');
  132.  
  133. Repeat
  134. IsCorrect := True;
  135. Writeln('Напишите ONE, если с консоли. Напишите TWO, если с файла.');
  136. Try
  137. Readln(Choise);
  138. Except
  139. IsCorrect := False;
  140. Writeln('Неверный тип данных!');
  141. End;
  142. If ((Choise <> 'ONE') And (Choise <> 'TWO')) Then
  143. Begin
  144. IsCorrect := False;
  145. Writeln('Неверный тип данных!');
  146. End;
  147. Until IsCorrect;
  148.  
  149. If Choise = 'ONE' Then
  150. FromConsole
  151. Else
  152. FromFile;
  153.  
  154. Readln;
  155. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement