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

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

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

> Задача на файлы.
Анисия
сообщение 27.02.2009 7:39
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Unconnected
сообщение 3.03.2009 13:44
Сообщение #2


mea culpa
*****

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

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


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

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


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

Цитата
abc defg hig klm nopqr


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

Цитата
abc
defg
hig klm


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


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 3.03.2009 14:46
Сообщение #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 - 3.03.2009 14:48


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

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


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

 



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