Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1. Про замену Min/Max местами
- >Если мы читаем 1 раз, то возможна проблема , что стартовые значения переменных могут быть меньше или больше всех введенных.
- Если в качестве стартового значения выбрать значение первой компоненты, то проблемы не будет.
- >За 3 прохода мы должны исключить возможность какой-либо проблемы, которая возникает, если все числа больше или меньше ,а 4-перестраховка.
- Это неоптимально. А "перестраховка" == индусский код, не делают так.
- Reset(F);
- if FileSize(F) = 0 then
- begin
- CloseFile(F);
- exit; // Ничего не делаем, если файл пустой, выходим из процедуры
- end;
- // считываем первую компоненту сразу в Amin
- Read(F, Amin);
- I := 0; // Номер минимального значения
- // Amax присваиваем значение Amin -- стартовое значение
- Amax := Amin;
- Q := 0; // Номер максимального значения
- // Обрабатываем остальные значения (сейчас указатель в файле находится после первой компоненты)
- N := 0;
- while not EOF(F) do
- begin
- Read(F, A);
- if A < Amin then
- begin
- Amin := A;
- I := N;
- end;
- if A > Amax then
- begin
- Amax := A;
- Q := N;
- end;
- N := N + 1;
- end;
- // Меняем местами, если Amin и Amax не одно и то же число
- if I <> Q then
- begin
- Seek(F, Q); // На место макс. записываем мин.
- Write(F, Amin)
- Seek(F, I); // и наоборот
- Write(F, Amax)
- end;
- CloseFile(F);
- 2.про проверку Amax
- {
- while not eof(F) do
- begin
- Read(F,A);
- N:=N+1;
- end;
- If Amax>N then exit;
- If Amax<=0 then exit;
- }
- // Лучше так, без цикла
- // FileSize сразу возвращает число компонент в файле
- if (FileSize(F) = 0) or (AMax < 0) or (Amax < FileSize(F) - 1) then
- exit;
- 3. Ну, не удаление это, просто вывод.
- // Удаление всех четных значений.
- Procedure Nechet;
- 4. Как понять, что 10 -- это выход, в меню об этом не сказано.
- While Q <>10 do
- begin
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement