Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2014, 20:22   #1
motiv4ik
Новичок
Джуниор
 
Регистрация: 09.01.2014
Сообщений: 2
Счастье Разложить предложение на слова

В общем, задача программы заключается в следующем:
В edt1 пишется какое-то предложение, к примеру, "как дела малыш"
в memo1 должно по-строково вывести
"
как
дела
малыш
"
Вот тут, кое-что накидал, отовсюду и ото всех по чуть взяв. В итоге почти то, что нужно но запутался сам.
Код:
var
  Form1: TForm1;
  txt:string;   // исходный текст
  slovo:shortstring;  // слово из текста
const
  razd=' .,!?;:-"()';
glas='уУеЕыЫаАоОэЭяЯиИюЮ';
nn='Нн';

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var i:integer; sog:integer; gl:integer; n:integer;
begin
 slovo:='';
 txt:=edt1.Text;
 if txt='' then begin
   showmessage('Введите исходный текст !');
   edt1.SetFocus;
   exit
 end;

 while pos(txt[length(txt)],razd)<>0 do
  delete(txt,length(txt),1);
 for i:=1 to length(txt) do
  if pos(txt[i],razd)=0
   then begin
     slovo:=slovo+txt[i];
     if pos(txt[i],glas)<>0 then

     //здесь что-то
   end
   else if   (slovo<>'')
         then begin
          if (gl<sog)then mmo1.Lines.Add(slovo);
          slovo:='';
          gl:=0;
          sog:=0;
         end;



 mmo1.Lines.Add(slovo);
 
 for i := 1 to length(slovo) do begin
   if (pos(slovo[i],nn)<>0) then n:=n+1
 end;
 mmo1.Lines.Add(inttostr(n));
 edt1.Text:='';
 edt1.SetFocus;
 end;

end.
motiv4ik вне форума Ответить с цитированием
Старый 09.01.2014, 23:08   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а что должно быть со знаками препинания?!
Например, если в Edit1 внесли текст:
"Как дела, Малыш? Ты, надеюсь, не спишь?!"
что должно быть в Memo1 ?


такой вариант устроит?
Код:
const
  Delimiters = [' ','.',',','!','?',';',':','-','"','(',')',''''];
  glas='уУеЕыЫаАоОэЭяЯиИюЮ';
  nn='Нн';

procedure TForm1.btn1Click(Sender: TObject);
var
  i:integer; sog:integer; gl:integer; n:integer;
  slovo, txt : string;
begin
 txt:=edt1.Text;
 if txt='' then begin
   showmessage('Введите исходный текст !');
   edt1.SetFocus;
   exit
 end;

 slovo:='';
 txt := txt + ' ';
 for i := 1 to Length(txt) do begin
   if txt[i] in Delimiters then begin
     if ( Trim(slovo)<>'' ) then mmo1.Lines.Add(slovo);
     if txt[i]<>' ' then
        mmo1.Lines.Add(txt[i]); {если надо, знаки препинания (кроме пробела) тоже пихаем в мемо}
     slovo := '';
   end
   else
     slovo := slovo + txt[i];
end;
 edt1.Text:='';
 edt1.SetFocus;
end;

Последний раз редактировалось Serge_Bliznykov; 09.01.2014 в 23:19.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 10.01.2014, 00:32   #3
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

Цитата:
"как дела малыш"
Наилучшие примеры для исходных данных у ТС
Даже боюсь предположить, о чем думал автор, когда писал код.
Цитата:
"Как дела, Малыш? Ты, надеюсь, не спишь?!"


P.S. Прошу прощения за оффтоп.
Базиля вне форума Ответить с цитированием
Старый 10.01.2014, 08:47   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Базиля, жжёшь!!!!


я не специально, просто так получилось!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано предложение. Вывести на экран все слова, начинающиеся и оканчивающиеся на одну и ту же букву. mimit Помощь студентам 0 22.12.2012 00:36
Дано предложение. Напечатать все его слова mimit Помощь студентам 2 07.12.2012 14:05
Дано предложение. Вывести на экран все слова, начинающиеся и оканчивающиеся на одну и ту же букву. mimit Помощь студентам 5 07.12.2012 13:44
Дано предложение. Между словами предложения один пробел, а после последнего слова точка. Vadim123456 Помощь студентам 0 01.05.2010 23:28
Отредактировать заданное предложение, удаляя из него все слова с чётными номерами. HECKLY Помощь студентам 2 11.06.2009 00:33