Advertisement
dxvmxnd

Untitled

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