![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
1nSAnder |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте! Помогите, если можете, решить простую (IMHO) задачку на работу с файлом.
Вот условие. _Ввести с клавиатуры файл действительных чисел. _Переместить в нём все нули в конец, сохраняя порядок следования остальных компонент. _ДОПОЛНИТЕЛЬНЫЙ ФАЙЛ ИЛИ МАССИВ НЕ СОЗДАВАТЬ! _Выдать результирующий файл или сообщение, что это невозможно... Заранее премного благодарен. |
![]() ![]() |
1nSAnder |
![]()
Сообщение
#2
|
Группа: Пользователи Сообщений: 8 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот...
Это всё, что я нарешал... Код Program P2_3_FILE; Type tf= file of integer; Var f: tf; siz:longint; {Ввод файла=================================================} Procedure InputF (var ff:tf); Var x:integer; Begin writeln ('Создание файла. Конец файла = 777'); rewrite (ff); write ('Ввод компоненты '); readln (x); while x<>777 do begin write (ff,x); write ('Ввод компоненты '); readln (x) end; close (ff); End; {Вывод файла================================================} Procedure OutputF (var ff:tf); Var x: integer; Begin writeln ('Вывод файла '); reset (ff); while not eof (ff) do begin read (ff,x); write (x, ' ') end; writeln; close (ff); writeln ('Вывод закончен'); End; {Удаление нулей=============================================} Procedure DelOf0 (var ff:tf); Var x,y: integer; n: byte; fs: longint; Begin reset (ff); fs:= filesize (ff); while not eof (ff) do begin read (ff,x); if x=0 then begin n:= filepos (ff)-1; for i:=n to fs do begin seek (ff,i); read (ff,x); seek (ff, i-1); write (ff,x) end end end; close (ff) End; {Добавление нулей===========================================} Procedure Add0 (var ff:tf; var fs:longint; q: integer); Begin reset (ff); seek (ff, filesize (ff)); while filesize (ff)<=fs do begin write (ff,q) end; close (ff) End; {Основная программа=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=} BEGIN Assign (f, 'fx.d'); InputF (f); OutputF (f); DelOf0 (f); Add0 (f,siz,0); OutputF (f) END. Тут где-то ошибка намбер 100: Диск рид еррор!!! Найдите, пож-та, если не трудно. З.Ы. Прогу проверял мой препод по информатике. На первый взгляд ничего не сказал. И на второй тоже. Сказал просто: "Сам думай!" (А ведь прав!!!) |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 12:33 |