Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.94 KB | None | 0 0
  1. program laba22;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6. SysUtils,
  7. Windows;
  8.  
  9. const
  10. Max = 2147483647;
  11. Min = - 2147483647;
  12. type
  13. MyArray = array of Integer;
  14.  
  15. //процедура для нахождения двух новых последовательностей
  16. procedure newArrays (var newFirst, newSecond: MyArray; firstArr, secondArr: MyArray; n:Integer);
  17. var
  18. i:Integer;
  19. begin
  20. for i := 0 to n-1 do
  21. if firstArr[i] > secondArr[i] then
  22. begin
  23. newFirst[i] := firstArr[i];
  24. newSecond[i] := secondArr[i];
  25. end
  26. else
  27. begin
  28. newFirst[i] := secondArr[i];
  29. newSecond[i] := firstArr[i];
  30. end;
  31. end;
  32.  
  33. //процедура для проверки правильности имени файла
  34. procedure enterCorrectName (var fileName: String);
  35. var
  36. correctName: Boolean;
  37. begin
  38. repeat
  39. begin
  40. readln(fileName);
  41. if FileExists(fileName) then
  42. correctName := True
  43. else
  44. begin
  45. Writeln('Имя файла было введено некорректно. Попробуйте еще раз.');
  46. correctName := False;
  47. end;
  48. end;
  49. until correctName;
  50. end;
  51.  
  52. // процедура проверяет ошибки, связанные с чтением из файла (в том числе, пустой файл или нет)
  53. procedure resetMyFile (var input: TextFile);
  54. var
  55. fileName:String;
  56. begin
  57. try
  58. reset(input);
  59. if Eof (input) then
  60. begin
  61. writeln('Файл пустой. Откройте другой файл');
  62. enterCorrectName(fileName);
  63. assignFile(input, fileName);
  64. resetMyFile(input);
  65. end;
  66. except
  67. writeln('Не удается открыть файл для чтения. Откройте другой файл');
  68. enterCorrectName(fileName);
  69. assignFile(input, fileName);
  70. resetMyFile(input);
  71. end;
  72.  
  73. end;
  74.  
  75. //Процедура для вывода массива на экран и записи в файл
  76. procedure output(var newFirst, newSecond: MyArray; n: Integer);
  77. var
  78. i: Integer;
  79. output: TextFile;
  80. begin
  81. writeln('Результат выполнения программы: ');
  82. assignFile(Output, 'output.txt');
  83. rewrite(Output);
  84. i := 0;
  85. while i < n do
  86. begin
  87. write(newFirst[i], ' ');
  88. write(Output, newFirst[i], ' ');
  89. inc(i);
  90. end;
  91. writeln(' ');
  92. writeln(output, ' ');
  93. i := 0;
  94. while i < n do
  95. begin
  96. write(newSecond[i], ' ');
  97. write(Output, newSecond[i], ' ');
  98. inc(i);
  99. end;
  100. closeFile(Output);
  101. end;
  102.  
  103. //функция для чтения целых чисел из файла
  104. function readNumberFromFile(var input: TextFile; var fileName: String; var isValidInput: Boolean; isPositive: Boolean): Integer;
  105. var
  106. n: Integer;
  107. begin
  108. try
  109. read(input, n);
  110. if (n < 0) and isPositive then
  111. begin
  112. writeln('Данное число не может быть отрицательным. Нужно изменить данные в файле или открыть другой файл');
  113. isValidInput := false;
  114. end;
  115. except
  116. writeln('В файле некорректная верхняя граница. Нужно изменить данные в файле или открыть другой файл');
  117. isValidInput := false;
  118. end;
  119. readNumberFromFile := n
  120. end;
  121.  
  122. var
  123. firstArr, secondArr, newFirst, newSecond: MyArray;
  124. n, i: Integer;
  125. input: TextFile;
  126. fileName: String;
  127. isValidInput: Boolean;
  128.  
  129. begin
  130. setConsoleCP(1251);
  131. setConsoleOutputCP(1251);
  132. writeln('Данная программа формирует две новые последовательности из заданных, элементы которых вычисляются по следующему правилу: ai = max(ai,bi), bi = min(ai,bi)');
  133. writeln('Введите имя файла, в котором находятся данные');
  134. repeat
  135. isValidInput := true;
  136. enterCorrectName(fileName);
  137. assignFile(input, fileName);
  138. resetMyFile(input);
  139. n := readNumberFromFile(input, fileName,isValidInput, true);
  140. setlength(firstArr, n);
  141. setLength(secondArr, n);
  142. setlength(newFirst, n);
  143. setLength(newSecond, n);
  144. for i := 0 to n-1 do
  145. firstArr[i] := readNumberFromFile(input, fileName,isValidInput, false);
  146. for i := 0 to n-1 do
  147. secondArr[i] := readNumberFromFile(input, fileName,isValidInput, false);
  148. closeFile(input);
  149. until isValidInput;
  150. newArrays(newFirst, newSecond,firstArr, secondArr, n);
  151. output (newFirst, newSecond, n);
  152. readln;
  153. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement