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

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

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

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





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

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


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

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

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

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

Текст 2(English)
yearrhtr

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


Гость






Разбиваешь строку на слова и проверяешь, состоит ли слово только из символов кириллицы (тогда его в один файл), или только из латиницы (значит, в другой файл)... Если есть что-то еще - то не записывать никуда...
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 29.12.2007 20:12
Сообщение #3


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

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

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


не совсем понятно:
ьвап' состоит не только из русских букв, однако мы ту часть, которая есть русские буквы, переносим
а из
hjnроим4пhff4hg65
мы проимп не выделяем.


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


Гуру
*****

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

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


Действительно.
Даже если ввести уточнение: не "русские буквы", а "символы, используемые в русском языке", все равно в ответе фгурировать должно "Стекловьвап'мебель", а не "Стекловьвапмебель".
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.12.2007 21:32
Сообщение #5


Гость






А если ввести уточнение, что слова разделяются НЕ только пробелами, а еще и другими разделителями (причем разделителей может быть больше одного)? Кто сказал, что ' не может быть разделителем?
 К началу страницы 
+ Ответить 
andriano
сообщение 29.12.2007 21:54
Сообщение #6


Гуру
*****

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

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


Вопрос в другом - кто сказал, что может?
По условию вообще нет такого понятия как разделитель. Следовательно, словом следует считать ЛЮБУЮ последовательность русских букв, встреченных в тексте. В том числе и из одного символа.
Откуда следует уточненный алгоритм: все русские буквы помещаем в один файл, английские - в другой, а все остальное - игнорируем.
Кто вообще придумал выделять из текста слова? Если в выходные файлы их предполагается помещать без разделителей, то это совершенно излишне.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 29.12.2007 22:24
Сообщение #7


Гость






Цитата
Кто вообще придумал выделять из текста слова?
Собственно, я придумал. А что, у тебя с этим какие-то проблемы? Ты здесь вообще каким боком решаешь, что автору подойдет, а что - нет? Или ты - его личный адвокат и представитель?

Твои ОБЩИЕ слова в КАЖДОЙ теме порядком поднадоели, знаешь? Я тоже могу ВЕЗДЕ писать "Что сделал сам?" и говорить, что то что предлагают другие - НЕ НУЖНО, не предлагая ничего взамен... И придираться к словам я тоже умею, теперь у тебя будет шанс в этом убедиться dry.gif


P.S.
Цитата
Откуда следует уточненный алгоритм: все русские буквы помещаем в один файл, английские - в другой, а все остальное - игнорируем.
Угу... Как же...

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

Текст 2(русский)
Стекловьвапмебель
ВСЕ русские буквы присутствуют в Текст 2, правда... Ах, ну да... andriano же так удобнее, естественно надо сделать, как ОН сказал, а не как просит автор...

Сообщение отредактировано: volvo - 29.12.2007 22:39
 К началу страницы 
+ Ответить 
andriano
сообщение 29.12.2007 22:55
Сообщение #8


Гуру
*****

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

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


Цитата(volvo @ 29.12.2007 22:24) *

Собственно, я придумал. А что, у тебя с этим какие-то проблемы? Ты здесь вообще каким боком решаешь, что автору подойдет, а что - нет? Или ты - его личный адвокат и представитель?
Я не решаю. Я просто умею читать и делюсь своими впечатлениями от прочитанного.
Цитата

Твои ОБЩИЕ слова в КАЖДОЙ теме порядком поднадоели, знаешь? Я тоже могу ВЕЗДЕ писать "Что сделал сам?" и говорить, что то что предлагают другие - НЕ НУЖНО, не предлагая ничего взамен... И придираться к словам я тоже умею, теперь у тебя будет шанс в этом убедиться dry.gif
"Общие слова", говоришь? "Ничего не предлагая?
Цитата

P.S.
Угу... Как же...
Вот этот твой комментарий относится КАК РАЗ к одному из моих КОНКРЕТНЫХ предложений.
Нехорошо в одном и том же сообщении противоречить самому себе.
Цитата

ВСЕ русские буквы присутствуют в Текст 2, правда... Ах, ну да... andriano же так удобнее, естественно надо сделать, как ОН сказал, а не как просит автор...
Да, примеры ПРОТИВОРЕЧАТ опубликованному условию. Что дальше? Будем выяснять отношения между собой или будем выяснять, что автору темы нужно на самом деле?

Сообщение отредактировано: andriano - 29.12.2007 22:56
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Geophysist
сообщение 3.01.2008 18:09
Сообщение #9





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

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


Да, извините, ьвап' не переносится никуда. А разделитель есть - пробел.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 3.01.2008 23:41
Сообщение #10


Профи
****

Группа: Пользователи
Сообщений: 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
Сообщение #11


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

Группа: Модераторы
Сообщений: 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 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.01.2008 9:54
Сообщение #12


Гость






Цитата
русские буквы не во всех кодировках представляют связное множество
С латинскими, заданными в такой форме, тоже возможны баги, кстати (между прописными и строчными буквами есть еще "посторонние" 6 символов):
s := 'start finish begin` 98989898 end';
и begin` тоже запишется в файл, хотя и не должно... Лучше все-же латиницу разбить на 2 интервала...
 К началу страницы 
+ Ответить 
Айра
сообщение 4.01.2008 17:37
Сообщение #13


Профи
****

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

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


У меня, когда в FPC работаю русские буквы вообще вот так выглядят: ЇаЁўҐв (привет) sad.gif

Цитата
русские буквы не во всех кодировках представляют связное множество..
Лучше все-же латиницу разбить на 2 интервала...

Глупый вопрос: как определить, какая у меня кодировка и как в ней располагаются эти буквы? Нехочется дальше сталкиваться с такими проблемами..

to Lapp: первую конструкцию заменила (+ процедура удаления тоже несколько изменилась)..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.01.2008 21:04
Сообщение #14


Человек
*****

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

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


Цитата(Айра @ 4.01.2008 16:37) *
и как в ней располагаются эти буквы?
самый простой способ, ИМХО, распечатать все символы в цикле с изменяющимся кодом...
        for i:=0 to 255 do
writeln(i:3, '=', chr(i));
а затем сравнить с таблицами...(особый случай , когда есть проблемы с неизвестностю кодировки терминала...)
ну, или посмотреть дукументацию...

Сообщение отредактировано: compiler - 4.01.2008 21:11


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 4.01.2008 21:05
Сообщение #15


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

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

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


Айра, сделай, например, так:
var i: integer;

begin
for i:=32 to 255 do
begin
if (i-32) mod 10=0 then //чтобы было по 10 символов в строке
writeln;
write(char(i), ' ');
end;
readln;
end.

ну и сами коды (i) выводи.... если именно они нужны, а не только порядок.


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


Профи
****

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

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


Гы)) В двух компиляторах разные таблицы:
Прикрепленное изображение
Предположение: может как раз таки из-за того, что у АЗС (прикольно)) у FPC и Windows разные таблицы мне первый всегда какие-то каракули в файлы записывает?

to compiler:
Цитата
а затем сравнить с таблицами
: ссылочку не дашь? smile.gif

Сообщение отредактировано: Айра - 4.01.2008 21:27
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.01.2008 21:42
Сообщение #17


Человек
*****

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

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


Цитата(Айра @ 4.01.2008 20:22) *
to compiler:
: ссылочку не дашь? smile.gif
на википедию? smile.gif у меня в локалке отучают ходить на википедию через инет(=>ссылку на конкретную страницу дать тяжко). зайди на нее и введи в поиске win 1251, а затем CP866 и сравни со своими таблицами...

зы
насколько я знаю, кодировка задается не компилятором а средой разработки(IDE)

Сообщение отредактировано: compiler - 4.01.2008 22:00


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 4.01.2008 21:58
Сообщение #18


Гость






Цитата
В двух компиляторах разные таблицы:
Естественно... TPW выдает тебе таблицу для Windows-1251, а FPC - для Кодовой страницы 866
 К началу страницы 
+ Ответить 
Айра
сообщение 4.01.2008 22:03
Сообщение #19


Профи
****

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

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


Пасибо)) теперь хоть знаю как их звать))

О!! нашла метод борьбы с каракулями: открываю файл в commander'e кнопкой F3 и выбираю ASCII (кодировка DOS) Ура!!! yahoo!.gif но все равно не очень удобно((...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.01.2008 22:05
Сообщение #20


Человек
*****

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

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


Цитата(Айра @ 4.01.2008 21:03) *
но все равно не очень удобно((...
ИМХО, проще использовать одну среду и не "морочити собi цим голову ", как сказал Ющенко...smile.gif

Сообщение отредактировано: compiler - 4.01.2008 22:06


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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