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

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

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

> Задача на файлы.
сообщение
Сообщение #1


Новичок
*

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

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


Добрый день, помогите решить задачу, есть файл со словами разделенных пробелом, вывести в новый файл все слова отличные от последнего. Первый файл я получила, читаю строки из него. А что дальше делать не знаю, или считать кол-во слов, или удалаять подстроку из строки.


program Lab3;
uses crt;
var f, g: text;
y, x :string; i:integer;

begin
clrscr;
assign(f,'C:\bp\bin\t.txt');
reset(f);
writeln('Содержание файла <f>');
repeat
readln(f, y);
writeln(' ', y);
until (eof(f));
close(f);
end.

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


mea culpa
*****

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

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


Цитата
не обрабатываются пробелы перед/после дефиса
и что за пробелы такие перед/после дефиса?..

Unconnected, а ты вообще проверяешь свои решения?..


Насчёт дефиса - это я имел в виду, что если дать программе word - word например, то '-' будет считаться за слово. А решение я проверял. Входной файл:

Цитата
abc defg hig klm nopqr


Выходной файл:

Цитата
abc
defg
hig klm


Вот что не в строку пишет это да.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


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

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

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


Цитата(Unconnected @ 3.03.2009 13:44) *
Насчёт дефиса - это я имел в виду, что если дать программе word - word например, то '-' будет считаться за слово.
Я извиняюсь за излишние придирки, я хотел сказать, что то, что ты имеешь в виду называется в русском языке "тире" (хлеб - всему голова), а дефис соединяет два слова (как-то, сильно-пресильно) и никаких пробелов при нем в принципе быть не может. Правда, в обычном компьютерном тексте (txt) оба они как правило представлены одним символом (минусом), так что различимы только по контексту. Еще раз извиняюсь, я понимаю, что это форум не филологов..

Думаю, то, что тире считается за отдельное слово - совершенно нормальное явление в тех условиях, которые приведены Анисией, так что извиняться тут не за что.

Цитата(Unconnected @ 3.03.2009 13:44) *
А решение я проверял.
И еще раз извиняюсь. Я что-то никак не могу врубиться в требования задачи: может ли в файле быть несколько строк? (Анисия, ответь, пожалуйста.) Я проверял на файле с неколькими строками, потому, наверное, и получил не то. Сам не знаю, почему я привязался к многострочным файлам.. наверное, потому, что одной строки в 255 символом слишком уж мало, чтоб носить гордое имя файла)).

Ниже - реализация функции GetWord, о которой я говорил раньше. Файл может содержать много строк (каждая не больше 255 символов. Структура основной программы в целом selfexplainable, но могу дать пояснения, если надо. К функции тоже, конечно smile.gif.
var
f,g: text;
s,t,w: string;
p: byte;

function GetWord: string;
begin
repeat
if s='' then ReadLn(f,s);
while (s<>'')and(s[1]=' ') do Delete(s,1,1);
until (s<>'')or EoF(f);
p:=Pos(' ',s);
if p=0 then p:=Length(s) else Dec(p);
GetWord:=Copy(s,1,p);
Delete(s,1,p)
end;

begin
Assign(f,'in.txt');
ReSet(f);
s:='';
t:='';
repeat
w:=t;
t:=GetWord;
until t='';
ReSet(f);
s:='';
Assign(g,'out.txt');
ReWrite(g);
repeat
t:=GetWord;
if t<>w then Write(g,t,' ')
until t='';
Close(g);
Close(f)
end.


Сообщение отредактировано: Lapp -


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Анисия   Задача на файлы.   27.02.2009 11:39
bura   Тебе надо найти последнее слово. Потом снова надо …   27.02.2009 14:31
Анисия   Делаю цикл обратный, for i:=length(y) downto 1 d…   2.03.2009 16:21
maksimla   может сделай так раз отделены слова пробелом то …   2.03.2009 16:51
Unconnected   Ты читаешь в переменную у и при следующей итерац…   2.03.2009 23:11
Unconnected   var f:text; y,y2,y3,y4:string; a:int…   3.03.2009 0:04
Lapp   не обрабатываются пробелы перед/после дефисаи что …   3.03.2009 8:42
Lapp   Вот простенькое решение. Учти, что я интерпретиро…   3.03.2009 9:22
Анисия   Спасибо большое за помощь, вот что у меня получило…   3.03.2009 11:03
Lapp   вот что у меня получилось. ... два часа ковыряний …   3.03.2009 13:21
Анисия   Правильно сказали, я не то совсем нахожу...... спа…   3.03.2009 14:17
Unconnected   Насчёт дефиса - это я имел в виду, что если дать…   3.03.2009 17:44
Lapp   Насчёт дефиса - это я имел в виду, что если дать п…   3.03.2009 18:46
Unconnected   Ага, на многострочных не работает, хотя изначально…   3.03.2009 18:58


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

 





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