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

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

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

> работа с файлом, файл из строк
18192123
сообщение 3.12.2006 17:23
Сообщение #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 - 3.12.2006 18:58
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 19)
IchLiebeDich
сообщение 3.12.2006 17:46
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 3.12.2006 17:54
Сообщение #3


Гость






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

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


Профи
****

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

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


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

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


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


Профи
****

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

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


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

Объясните!!!!!
PLEAZZZZZZZZZZZZZZZZZZZZZZ!!!!!!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 4.12.2006 16:54
Сообщение #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 
 К началу страницы 
+ Ответить 
18192123
сообщение 4.12.2006 21:22
Сообщение #7


Профи
****

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

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


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


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

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

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


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

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


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


Профи
****

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

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


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

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

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

теперь вроде всё понятно! ещё раз большое спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 6.12.2006 17:57
Сообщение #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 
 К началу страницы 
+ Ответить 
klem4
сообщение 7.12.2006 20:15
Сообщение #11


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

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

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


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


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 7.12.2006 22:46
Сообщение #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 - 7.12.2006 23:12
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.12.2006 22:52
Сообщение #13


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

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

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


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

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


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


Профи
****

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

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


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

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

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


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

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

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


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


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


Профи
****

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

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


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

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

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


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

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

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


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 7.12.2006 23:30
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.12.2006 23:37
Сообщение #19


Гость






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


И не имей никогда такой привычки - читать что-то из файла (в особенности строку) через Read... ТОЛЬКО ReadLN
 К началу страницы 
+ Ответить 
18192123
сообщение 7.12.2006 23:40
Сообщение #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

 



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