IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Работа с фалами, Считать f1, считать f2. Записать все в f3
saur
сообщение 26.05.2010 19:20
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Стоит задача считать f1 - c:\temp\f1.txt
Затем считать f2 - c:\temp\f2.txt
И все это записать в f3 - c:\temp\f3.txt

Вот что накодил.
program laba;

var f1, f2, f3:text;

a:integer;

begin

assign(f1, 'c:\temp\f1.txt');

reset(f1);

assign(f2, 'c:\temp\f2.txt');

reset (f2);

assign (f3, 'c:\temp\f3.txt');

rewrite(f3);

while not eof(f1) do

begin

read (f1,a);

write (f3, a);

end;

append(f3);

while not eof(f2) do

begin

read(f2,a);

write(f3,a);

end;



write('complete');

close(f1);

close(f2);

close(f3);

end.


Все ли сделано верно?

Сообщение отредактировано: saur - 26.05.2010 21:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 26.05.2010 20:51
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

Репутация: -  20  +


по идее перед append надо close(f3) сделать. Но тут append и не нужен, пишешь подряд и пишешь...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.05.2010 21:06
Сообщение #3


Гость






Цитата
по идее перед append надо close(f3) сделать.
Не надо:
Цитата(Pascal Help)
Append (procedure)
Opens an existing file for appending.
<...>
Append opens the existing external file with the name assigned to F. An error occurs if no external file of the given name exists. If F is already open, it is closed, then reopened. The current file position is set to the end of the file.
 К началу страницы 
+ Ответить 
saur
сообщение 26.05.2010 21:53
Сообщение #4





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


А так все верно? Просто я писал по памяти. Компилятора нет под рукой, я с телефона сижу, поэтому и попросил проверить.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.05.2010 0:13
Сообщение #5


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(saur @ 26.05.2010 22:53) *
А так все верно?
Нет.
Про чтение: поскольку файл текстовый, то сказать этого нельзя. Может быть и верно, и неверно - все зависит от формата входных файлов.
Про запись: заведомо неверно. Ты лепишь числа одно к другому без разделителей - как потом этот файл читать?

А append лучше действительно убрать..

P.S.
и что это за новая мода - писать код через строку и без форматирования?..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
saur
сообщение 27.05.2010 0:27
Сообщение #6





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 27.05.2010 0:13) *

Нет.
Про чтение: поскольку файл текстовый, то сказать этого нельзя. Может быть и верно, и неверно - все зависит от формата входных файлов.

Только числа на входе в файле через пробел
Цитата(Lapp @ 27.05.2010 0:13) *

Про запись: заведомо неверно. Ты лепишь числа одно к другому без разделителей - как потом этот файл читать?

Т.е. писать лучше так:
read(f2,a);
write(f3,a);
write(f3, ' ');


Да?
Цитата(Lapp @ 27.05.2010 0:13) *

А append лучше действительно убрать..

Он и так будет писать в конец файла?
Цитата(Lapp @ 27.05.2010 0:13) *

P.S.
и что это за новая мода - писать код через строку и без форматирования?..

Это называется пишу через оперу мини. Тут не очень удобно пробелами выравнивать код


Сообщение отредактировано: saur - 27.05.2010 0:31
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.05.2010 0:39
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(saur @ 27.05.2010 1:27) *
Только числа на входе в файле через пробел

Тогда вроде верно..
Цитата
Т.е. писать лучше так:
read(f2,a);
write(f3,a);
write(f3, ' ');

Да?
Так:
read(f2,a);
write(f3,a,' ');

Цитата
Он и так будет писать в конец файла?
А откуда ему вообще знать, что у тебя один файл закончился и начался второй? и какое ему до этого дело? ))
Процесс записи идет сам по себе, как шел, если ты не сделал reset на f3.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
saur
сообщение 27.05.2010 16:22
Сообщение #8





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Может кто нибудь откомпилировать и проверить корректность? Мало ли чего. Заранее благодарен за помощь.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 27.05.2010 16:29
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Цитата
Может кто нибудь откомпилировать и проверить корректность?

Программу и файлы приложи, проверю.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
saur
сообщение 27.05.2010 17:06
Сообщение #10





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


f1.txt
Код
1 2 3 4 5


f2.txt
Код
6 7 8 9


f3.txt пуст.

После работы программы должно записаться в f3.txt
Код
1 2 3 4 5 6 7 8 9
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Ozzя
сообщение 28.05.2010 7:21
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 220
Пол: Мужской

Репутация: -  16  +


Ответ получился:
Цитата
123456789

Если числа должны идти через пробел в f3.txt. то измени
write (f3, a);
на
write (f3, a,' ');


Сообщение отредактировано: Ozzя - 28.05.2010 7:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
saur
сообщение 28.05.2010 22:21
Сообщение #12





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Благодарю всех за помощь. Тему можно закрыть.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"