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

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

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

 
 Ответить  Открыть новую тему 
> Задача с файлом
сообщение
Сообщение #1


Новичок
*

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

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


Второй день сижу вот над чем...
Как заставить прогу считать содержимое файла (явно текстового, ибо разбит на строки разной длины) и каждый символ повторить 2 раза через пробел?
Вот содержимое:
1 3 5 6 7 8
2 3 3 3
3 4 6 4 4
5 1 1 1 1
6 5 7 5
2

И что делать, если программа при исполнении выдаёт мне "файл не открыт для чтения", при том, что у меня указано, что он открыт?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Приведи свой неработающий код...

Насчет "как это сделать" - придется завести второй файл, и читая из первого, заносить число дважды во второй... Правильно будет делать это, используя функцию seekeoln (посмотри в поиске, я где-то приводил пример чтения с ее помощью из файла)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Вот код. В общем, он компилируется и работает. НО... он перезаписывает данные во второй файл (увы, я не понимаю пока, как сделать так, чтобы он перезаписывал в старый), и не посимвольно, а дублируя группу символов (строку).
Если я ухожу от текстового типа и задаю в типе файла и в переменной элементов другие (integer, char), компилятор ругается и говорит, что файл не открыт...

Program File1;
Var t,t1 :text;
s :string;

Begin
Assign(t,'file1.txt');
Assign(t1,'file2.txt');
{$I-}
Reset(t);
{$I+}
If IOResult<>0 then
Begin
Writeln('The file is absent.');
Halt;
End;
Rewrite(t1);
While not eoln(t) do
Begin
Read(t,s);
Writeln(t1, s,s,' ');
Readln(t);
End;
Close(t1);
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Может быть тебе вот такой результат нужен :

uses crt;
var
f1,f2 : text;
s,temp : string;
i : byte;

begin

clrscr;

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

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

reset(f1); rewrite(f2);

while not(eof(f1)) do begin
readln(f1,s);
i := 1;
while(i <= length(s)) do begin
temp := s[i] + ' ';
insert(temp,s,i);
inc(i,4);
end;
writeln(f2,s);
end;

reset(f2); rewrite(f1);

while(not(eof(f2))) do begin
readln(f2,s);
writeln(f1,s);
end;

close(f1);
close(f2);

readln;
end.


Цитата

in
0
1 2
1 2 3

out : (будет и в файле in и в файле out)
0 0
1 1 2 2
1 1 2 2 3 3


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата(TBVlad @ 1.02.2006 15:59)
он перезаписывает данные во второй файл (увы, я не понимаю пока, как сделать так, чтобы он перезаписывал в старый)

Никак... Текстовый файл не имеет Random-доступа, только последовательно, значит ты не можешь ЗАМЕНИТЬ старую информацию на новую... Когда второй файл будет полностью создан - удали первый и переименуй новый на старое имя...

Program File1;
Var
t, t1: text;
n: integer;

const
s_name = 'fff.txt';

begin
Assign(t, s_name);
{$I-}
reset(t);
{$I+}
if IOResult <> 0 then begin
Writeln('The file is absent.'); Halt;
end;

Assign(t1,'fff_1.txt'); Rewrite(t1);
while not eof(t) do begin

While not eoln(t) do Begin
Read(t,n);
Write(t1, n, ' ', n,' ');
end;
Readln(t); writeln(t1);
end;

close(t);
Close(t1);

erase(t);
rename(t1, s_name);
End.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


Спасибо огромное.
Оба варианта работают... быстродействие в данном случае мало страдает, да и не важно пока.

Volvo, а последовательная замена элементов в текстовом файле тоже невозможна? Или возможна путём скачивания данных в массив и поэлементного приравнивания элементов файла к массиву?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Замена вообще возможна только через полное удаление старой информации (ReWrite), и занесение новой. Откуда ты будешь заносить новую информацию (из другого ли файла, из массива, или просто генерировать "на лету") - никакой разницы...
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 8.05.2024 2:25
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name