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

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

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

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


Профи
****

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

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


Нужно преобразовать файл, удалив последнее слово в каждой строке. (для строк можно использовать только
length, ord,char; для работы с файлом - assign,reset,rewrite, close, eof, rename, erase,seek)

у меня получилась какая-то ерунда( когда даю команду на запуск - runtime error 002 at 0000:004)


uses crt;
const k=ord(' ');
var f:file of string; n:integer;
s:string;
i:byte;
begin
assign(f,'d:\stroku.txt');
reset(f);
while not eof(f) do
begin
for i:=k to length(s)-1 do
s[i]:=s[i+1];
end;
seek(f,n+1);
while not eof(f) do
begin
read(f,s);
writeln(s);
end;
writeln;
close(f);
end.




Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 8
Пол: Женский
Реальное имя: Катерина

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


Цитата(18192123 @ 3.12.2006 16:23) *

Нужно преобразовать файл, удалив последнее слово в каждой строке.

у меня получилась какая-то ерунда( когда даю команду на запуск - runtime error 002 at 0000:004)


assign(f,'d:\999');



а файл открывает вообще? не указываешь расширение...


--------------------
Dear god, make everyone die. Amen.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
а файл открывает вообще?
no1.gif Мало того, что не открывает, так программа его вообще не находит, и сообщает об этом...

Error 2: File not found.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

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

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


извините, забыла внести изменения в код!
assign(f,'d:\stroku.txt');

но ошибки остались, у меня больше никаких мыслей! wacko.gif


Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

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

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


помогите, пожалуйста ,разобраться!
очент нужно!!!
что мне ещё нужно учитывать в моей программе?

Объясните!!!!!
PLEAZZZZZZZZZZZZZZZZZZZZZZ!!!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


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

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

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


uses crt;

var
f, temp: Text;
s: String;
i, j: Integer;

begin

assign(f, 'C:\f.txt'); reset(f);
assign(temp, 'C:\temp.txt'); rewrite(temp);

while not(eof(f)) do begin
readln(f, s);
i := Length(s);
while (i > 0) and (s[i] <> ' ') do dec(i);
for j := 1 to i - 1 do write(temp, s[j]);
writeln(temp);
end;

close(f);
erase(f);

close(temp);
rename(temp, 'C:\f.txt');

end.




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


Профи
****

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

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


Спасибо за помощь! у меня вопрос: под i подразумевается очерёдная строка? и ещё - файл temp мы должны создать заранее?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


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

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

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


Заранее должен быть создан файл f, содержащий строки, в которых слова разделены _одним_ пробелом.

Читая каждую строку из файла, мы переменной i присваеваем длину этой строки, далее идем по этой строке с конца, пока не наткнемся на пробел (или начало строки), далее записываем во "временный" файл всю строку с начала до того индекса, за которым следуем последний пробел (этот индекс = i) и соответсвенно последнее слово, которое нам не нужно.


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


Профи
****

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

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


Цитата(klem4 @ 4.12.2006 22:12) *

Заранее должен быть создан файл f, содержащий строки, в которых слова разделены _одним_ пробелом.

Читая каждую строку из файла, мы переменной i присваеваем длину этой строки, далее идем по этой строке с конца, пока не наткнемся на пробел (или начало строки), далее записываем во "временный" файл всю строку с начала до того индекса, за которым следуем последний пробел (этот индекс = i) и соответсвенно последнее слово, которое нам не нужно.

теперь вроде всё понятно! ещё раз большое спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Профи
****

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

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



program lab_9_1;
uses crt;
type tfile1=text; tfile=text;
procedure fbez_sl(var f:tfile; var f1:tfile1);
var s:string;
i,j:integer;
begin
assign(f,'c:\fil.txt'); reset(f);
assign(f1,'c:\temp.txt'); rewrite(f1);
while not(eof(f)) do begin
readln(f,s);
i:=length(s);
while (i>0) and (s[i]<>' ') do dec(i);
for j:=1 to i-1 do write(f1,s[j]);
writeln (f1);
end;
end;
VAR fil:tfile; temp:tfile1;
begin
fbez_sl(fil,temp);
close(fil);
erase(fil);
close(temp);
rename(temp,'c:\fil.txt');
end.



А КАК МН ВЫВЕСТИ РЕЗУЛЬТАТЫ РАБОТЫ НА ЭКРАН?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


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

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

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


Читаешь из файла строки и выводишь на экран ... чем проблема - то ?!


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


Профи
****

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

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


Цитата(klem4 @ 7.12.2006 20:15) *

Читаешь из файла строки и выводишь на экран ... чем проблема - то ?!

проблема втом, что не получается... вот что делаю

program lab_9_1;
uses crt;
type tfile1=text; tfile=text;
procedure fbez_sl(var f:tfile; var f1:tfile1; s:string;);
var
i,j:integer;
begin
assign(f,'c:\fil.txt'); reset(f);
assign(f1,'c:\temp.txt'); rewrite(f1);
while not(eof(f)) do begin
readln(f,s);
i:=length(s);
while (i>0) and (s[i]<>' ') do dec(i);
for j:=1 to i-1 do write(f1,s[j]);
writeln (f1);
end;
end;
VAR fil:tfile; temp:tfile1;
begin
fbez_sl(fil,temp); while not eof(temp) do begin read(temp,s); writeln(s); end;close(fil);
erase(fil);
close(temp);
rename(temp,'c:\fil.txt');
end.


Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


у тебя s - локальная переменная, действует только в procedure fbez_sl.
основная программа не знает, что это такое.

Сообщение отредактировано: мисс_граффити -


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


Профи
****

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

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


Цитата(мисс_граффити @ 7.12.2006 22:52) *

у тебя s - локальная переменная, действует только в procedure fbez_sl.
основная программа не знает, что это такое.

исправила, выдает пустой экран
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


ты бы показала, КАК исправила....


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


Профи
****

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

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


Цитата(мисс_граффити @ 7.12.2006 23:08) *

ты бы показала, КАК исправила....

смотри в коде
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


ты можешь привести компилирующийся код?


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


Профи
****

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

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


Цитата(мисс_граффити @ 7.12.2006 23:23) *

ты можешь привести компилирующийся код?


program lab_9_1;
uses crt;
type tfile1=text; tfile=text;
procedure fbez_sl(var f:tfile; var f1:tfile1; s:string);
var
i,j:integer;
begin
assign(f,'fil.txt'); reset(f);
assign(f1,'temp.txt'); rewrite(f1);
while not(eof(f)) do begin
readln(f,s);
i:=length(s);
while (i>0) and (s[i]<>' ') do dec(i);
for j:=1 to i-1 do write(f1,s[j]);
writeln (f1);
end;
end;
VAR fil:tfile; temp:tfile1; s:string;
begin
fbez_sl(fil,temp,s); reset(temp);
while not eof(temp) do begin read(temp); writeln(s); end;
close(fil);
erase(fil);
close(temp);
rename(temp,'fil.txt');
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






while not eof(temp) do begin
readLN(temp, S); { <--- У тебя S не было ... }
writeln(s);
end;


И не имей никогда такой привычки - читать что-то из файла (в особенности строку) через Read... ТОЛЬКО ReadLN
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Профи
****

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

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


Цитата(volvo @ 7.12.2006 23:37) *

while not eof(temp) do begin
readLN(temp, S); { <--- У тебя S не было ... }
writeln(s);
end;


И не имей никогда такой привычки - читать что-то из файла (в особенности строку) через Read... ТОЛЬКО ReadLN

Спасибо! поняла! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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