![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
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: Диск рид еррор!!! Найдите, пож-та, если не трудно. З.Ы. Прогу проверял мой препод по информатике. На первый взгляд ничего не сказал. И на второй тоже. Сказал просто: "Сам думай!" (А ведь прав!!!) |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата(1nSAnder @ 18.03.05 17:23) Тут где-то ошибка намбер 100: Диск рид еррор!!! Найдите, пож-та, если не трудно. А самому найти? Как мы ее искать будем? Точно так же и попробуйте: F7 - пошаговый прогон. Даст Вам точное местоположение ошибки... Преподаватель информатики совершенно прав: "Сам думай!" |
Guest |
![]()
Сообщение
#4
|
Гость ![]() |
Ну, узазал мне TP на строчку:
Код {Удаление нулей=============================================} 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; А в чём загвоздка-то? Вроде всё правильно! |
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Цитата(Guest @ 18.03.05 18:00) А в чём загвоздка-то? Вроде всё правильно! Да нет, не все правильно... Тут происходит чтение за концом файла ... А это - ошибка №100... Исправляйте... |
![]() ![]() |
![]() |
Текстовая версия | 7.09.2025 9:49 |