Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. 1. Про замену Min/Max местами
  2. >Если мы читаем 1 раз, то возможна проблема , что стартовые значения переменных могут быть меньше или больше всех введенных.
  3. Если в качестве стартового значения выбрать значение первой компоненты, то проблемы не будет.
  4. >За 3 прохода мы должны исключить возможность какой-либо проблемы, которая возникает, если все числа больше или меньше ,а 4-перестраховка.
  5. Это неоптимально. А "перестраховка" == индусский код, не делают так.
  6.  
  7. Reset(F);
  8. if FileSize(F) = 0 then
  9. begin
  10. CloseFile(F);
  11. exit; // Ничего не делаем, если файл пустой, выходим из процедуры
  12. end;
  13.  
  14. // считываем первую компоненту сразу в Amin
  15. Read(F, Amin);
  16. I := 0; // Номер минимального значения
  17. // Amax присваиваем значение Amin -- стартовое значение
  18. Amax := Amin;
  19. Q := 0; // Номер максимального значения
  20.  
  21. // Обрабатываем остальные значения (сейчас указатель в файле находится после первой компоненты)
  22. N := 0;
  23. while not EOF(F) do
  24. begin
  25. Read(F, A);
  26.  
  27. if A < Amin then
  28. begin
  29. Amin := A;
  30. I := N;
  31. end;
  32.  
  33. if A > Amax then
  34. begin
  35. Amax := A;
  36. Q := N;
  37. end;
  38. N := N + 1;
  39. end;
  40.  
  41. // Меняем местами, если Amin и Amax не одно и то же число
  42. if I <> Q then
  43. begin
  44. Seek(F, Q); // На место макс. записываем мин.
  45. Write(F, Amin)
  46. Seek(F, I); // и наоборот
  47. Write(F, Amax)
  48. end;
  49.  
  50. CloseFile(F);
  51.  
  52.  
  53. 2.про проверку Amax
  54. {
  55. while not eof(F) do
  56. begin
  57. Read(F,A);
  58. N:=N+1;
  59. end;
  60. If Amax>N then exit;
  61. If Amax<=0 then exit;
  62. }
  63. // Лучше так, без цикла
  64. // FileSize сразу возвращает число компонент в файле
  65. if (FileSize(F) = 0) or (AMax < 0) or (Amax < FileSize(F) - 1) then
  66. exit;
  67.  
  68.  
  69. 3. Ну, не удаление это, просто вывод.
  70. // Удаление всех четных значений.
  71. Procedure Nechet;
  72.  
  73.  
  74. 4. Как понять, что 10 -- это выход, в меню об этом не сказано.
  75. While Q <>10 do
  76. begin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement