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

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

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

 
 Ответить  Открыть новую тему 
> Строки
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской

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


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


Профи
****

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

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


С файла читать умеешь? На предложения разбить можешь?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 6
Пол: Мужской

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


Цитата(Client @ 3.03.2010 18:45) *

С файла читать умеешь? На предложения разбить можешь?


C файла читать умею, а вот с разбиением на предложением не знаю как быть.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Предложения разделяются чем? В самом верху раздела FAQ есть прикрепленная тема - Разбиение на слова. Все способы. Там можешь посмотреть десяток способов, как разбить строку на слова. Но ведь точно таким же образом группа предложений разбивается на отдельные предложения (только заменить разделители. Для слов - это пробелы, точки, запятые, еще что там нужно; для предложений - точка, вопросительный и восклицательный знак. Можешь еще что-то добавить, неважно).

Итого - алгоритм: либо читаешь все содержимое файла в одну строку, и потом прогоняешь функцию разбивки (вряд ли получится, скорее всего длина файла больше 255 символов, так что не пойдет. Но если меньше - вполне), либо читаешь из файла посимвольно (и собираешь символы в строку), пока не прочел точку или вопрос. знак, или воскл. знак, или перевод строки.

Когда прочел окончание предложения ( .?! ) - смотришь строку. Есть символы ( ,: ) - ничего не делать. Нет - вывести строку на печать.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 6
Пол: Мужской

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


В общем попробовал сделать это все дело и вот что получилось:

Program File_text;
Uses CRT;
var
f1 : text;
st : string;
n: byte;
i:integer;
ka:integer;
begin
ClrScr;
assign (f1, 'file1.txt');
rewrite (f1);
writeln ( f1, 'Tolko ety stroky dolshno vivesty. v etoi stroke nety zapyatih i dvoetochiy');
writeln ( f1, 'I ety toje parampampam');
writeln ( f1, 'sdfsdfsdf,');
writeln ( f1, 'sdfsdf:');
writeln ( f1, 'sdfsdfd:,');
close (f1);
reset (f1);
while not eof (f1) do
begin
readln (f1, st);
for i:= 1 to length(st) do
begin
if (st[i] =':') OR (st[i] =',') then
writeln(st);
end;
end;
close (f1);
readln
end .


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


Профи
****

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

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


добавить переменную - флаг
while not eof (f1) do 
begin
readln (f1, st);
flag:=true;
i:=1;
while (i<=length(st)) and (flag) do
begin
if (st[i] =':') OR (st[i] =',') then flag:=false;
inc(i);
end;
if flag then writeln(st);
end;
Так попробуй, я не тестил
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 6
Пол: Мужской

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


Цитата(Client @ 4.03.2010 0:16) *

добавить переменную - флаг
while not eof (f1) do 
begin
readln (f1, st);
flag:=true;
i:=1;
while (i<=length(st)) and (flag) do
begin
if (st[i] =':') OR (st[i] =',') then flag:=false;
inc(i);
end;
if flag then writeln(st);
end;
Так попробуй, я не тестил


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


Профи
****

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

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


Добавил переменную, которая содержит в себе признак отсутсвия двоеточия или запятой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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