• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о проекте, чтобы узнать больше. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите с программой на Delphi

Настюша

Ученик
Регистрация
13 Май 2011
Сообщения
3
Реакции
0
Баллы
0
Помогите с программой на Delphi

В тексте содержатся русские и англ слова. разделить все слова на 3 списка: русские слова, англ слова, слова, происхождения которых нельзя определить однозначно. Например 'шутка' - русское слово, 'computer' - англ слово, 'cop' слово которое может быть русским и англ по составу букв..
 
За слово примем совокупность символов русского и латинского алфавитов, отделенных друг от друга символом пробел или знаком препинания.

Алгоритм решения задачи (примерный, естественно):
1) получаете текст любым оговоренным способом
2) обрабатываете текст посимвольно, выделяя отдельные слова в общий список (можно через процедуру поиска слова или использовать анализ на совпадение полученного слова с элементом списка)
3) используя внутреннее представление символов русского и английского алфавитов, проанализировать каждое слово на символьный состав (воспользуйтесь кодовой таблицей :) ) и переместить слова в соответствующий список.
4) выдать результирующие списки в оговоренной форме.
3) полученный список
 
ну мне бы хотелось увидеть код :tehnari_ru_942: хоть примерно знать как написать
 
К сожалению, на Delphi не пишу. Паскаль не устроит?
 
да, если не сложно. Может разберусь что к чему
 
Ну вот - всё, что смог. Работает вроде как надо, но это, увы, Паскаль. Естественно, имена и адреса файлов можно поменять:
Код:
TYPE
 ChSet=Set of Char;
VAR
 Ch_L,Ch_C,Ch_LC,Ch_S:ChSet;
 f_in,f_out:TEXT;
 S,S1:String;
 Ch:Char;
 i:Byte;
 b:Boolean;

BEGIN
 Ch_L:=['A'..'Z']+['a'..'z'];
 Ch_C:=['А'..'Я']+['а'..'я'];
 Ch_LC:=['A','B','C','E','H','K','M','O','P','T','X',
         'a','c','e','o','p','x','y',
         'А','В','Е','К','М','Н','О','Р','С','Т','Х',
         'а','е','о','р','с','у','х'];
 Ch_S:=[' ',',','.','?','!',':',';','"','-',Chr(13)];
 Assign(f_in,'D:\txt.txt');
 ReSet(f_in);
 Assign(f_out,'D:\res.txt');
 ReWrite(f_out);
 S1:='******************************';
 Repeat
  Read(f_in,Ch);
  If not(Ch in Ch_S) then
   begin
    i:=1;
    S1[1]:=Ch;
    repeat
     Read(f_in,Ch);
     Inc(i);
     If not(Ch in Ch_S) then S1[i]:=Ch;
    until (Ch in Ch_S) or (EoF(f_in));
    If not(Eof(f_in)) then
     S:=Copy(S1,1,i-1)
    else
     S:=Copy(S1,1,i);
    b:=true;
    i:=0;
    repeat
     Inc(i);
     if not(S[i] in Ch_LC) then b:=false;
    until (b=false) or (i=Length(S));
    If b then Writeln(f_out,S+' - Latin & Cyrillic')
    else
    If S[1] in Ch_L then Writeln(f_out,S+' - Latin')
    else
    If S[1] in Ch_C then Writeln(f_out,S+' - Cyrillic');
    S1:='******************************';
   end;
 Until EoF(f_in);
 Close(f_in);
 Close(f_out);
END.
 
Назад
Сверху