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

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

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

> Русские и английские слова, помогите решить задачу
Geophysist
сообщение 29.12.2007 18:51
Сообщение #1





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

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


В общем смысл задачи такой. Имеется текст из русских, английских букв, чисел, знаков препинания и пробелов. Русские слова это любые последовательности только из русских букв,английские аналогично. Все русские слова необходимо переместить в один текстовый файл, английские в другой. Числа, знаки препинания и пробелы переносить не надо.

Вот пример как должна работать прога:

Текст 1.
Стекло в 1345 year ьвап' мебель rhtr 53463'' ' hjnроим4пhff4hg65

Текст 2(русский)
Стекловьвапмебель

Текст 2(English)
yearrhtr

Если кому не влом, помогите плиз!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Айра
сообщение 3.01.2008 23:41
Сообщение #2


Профи
****

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

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


Можно сделать так:
var s,s1: string;
f1,f2: text;
i,j: integer;
R,E: set of char;
ru,en,dr: boolean;
begin
R:=['А'..'я'];
E:=['A'..'z'];
writeln('введите строку');
readln(s);
assign(f1, 'rus.txt');
rewrite(f1);
assign(f2, 'eng.txt');
rewrite(f2);
while length(s)<>0 do
begin
s1:='';
dr:=false; // наличие других символов
ru:=false; // наличие русских символов
en:=false; // наличие латинских символов
i:=Pos(' ',s);
if i>0 then s1:=Copy(s,1,i-1)
else s1:=s;
for j:=1 to length(s1) do
begin
if s1[j] in R then ru:=true
else if s1[j] in E then en:=true
else dr:=true;
end;
if dr=false then
begin
if ru and (not en) then write(f1, s1);
if (not ru) and en then write(f2, s1);
end;
if i>0 then delete(s,1,i)
else delete(s,1,length(s));
end;
close(f1);
close(f2);
end.



Сообщение отредактировано: Айра - 4.01.2008 17:44
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 4.01.2008 5:26
Сообщение #3


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

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

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


Цитата(Айра @ 3.01.2008 23:41) *

Можно сделать так:
Можно и так, только я бы конструкцию:
      while (s[i]<>' ') and (i<=length(s)) do
begin
s1:=s1+s[i];
inc(i);
end;

- заменил бы на такую:
      i:=Pos(' ',s);
if i>0 then s1:=Copy(s,1,i-1) else s1:=s;

А выражение типа:
          if s1[j] in R then ru:=true

- на вот такое:
  ru:= ru or (s1 in R);

- хотя последнее спорно..
Но я бы делал проверку иначе, думаю.. smile.gif

И еще замечание: русские буквы не во всех кодировках представляют связное множество..

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


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

Сообщений в этой теме
Geophysist   Русские и английские слова   29.12.2007 18:51
volvo   Разбиваешь строку на слова и проверяешь, состоит л...   29.12.2007 19:04
мисс_граффити   не совсем понятно: ьвап' состоит не только из ...   29.12.2007 20:12
andriano   Действительно. Даже если ввести уточнение: не ...   29.12.2007 21:14
volvo   А если ввести уточнение, что слова разделяются НЕ ...   29.12.2007 21:32
andriano   Вопрос в другом - кто сказал, что может? По услови...   29.12.2007 21:54
volvo   Собственно, я придумал. А что, у тебя с этим какие...   29.12.2007 22:24
andriano   Собственно, я придумал. А что, у тебя с этим каки...   29.12.2007 22:55
Geophysist   Да, извините, ьвап' не переносится никуда. А р...   3.01.2008 18:09
Айра   Можно сделать так: var s,s1: string; f1,f2: te...   3.01.2008 23:41
Lapp   Можно сделать так:Можно и так, только я бы констр...   4.01.2008 5:26
volvo   С латинскими, заданными в такой форме, тоже возмож...   4.01.2008 9:54
Айра   У меня, когда в FPC работаю русские буквы вообще в...   4.01.2008 17:37
compiler   и как в ней располагаются эти буквы?самый простой ...   4.01.2008 21:04
мисс_граффити   Айра, сделай, например, так: var i: integer; begi...   4.01.2008 21:05
Айра   Гы)) В двух компиляторах разные таблицы: [i]Предп...   4.01.2008 21:22
compiler   to compiler: : ссылочку не дашь? :)на википедию? :...   4.01.2008 21:42
volvo   Естественно... TPW выдает тебе таблицу для Windows...   4.01.2008 21:58
Айра   Пасибо)) теперь хоть знаю как их звать)) О!...   4.01.2008 22:03
compiler   но все равно не очень удобно((...ИМХО, проще испо...   4.01.2008 22:05
Айра   Дык подходящая для минэ среда - це АЗС.. блин FPC,...   4.01.2008 22:15
compiler   Дык подходящая для минэ среда - це [s]АЗС.. блин F...   4.01.2008 22:34
andriano   Дык подходящая для минэ среда - це [s]АЗС.. блин ...   5.01.2008 11:28
Айра   ..оно, если я правильно поняла, будет "перек...   5.01.2008 15:29
andriano   Ну, примерно так: вместо writeln(MyString); пишешь...   5.01.2008 16:48
Айра   Это в коде самой программы? И так каждый раз? мдя...   5.01.2008 16:58
мисс_граффити   ну естественно... RecodeString2current - это _проц...   5.01.2008 17:33
Айра   компилируется, но в файл все равно пишется ерунда:...   5.01.2008 17:54
andriano   Честно говоря, я не телепат. Обращаю внимание, что...   5.01.2008 18:08
Айра   ..у меня проблемы были именно с записью в txt-фай...   5.01.2008 18:32


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

 



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