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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2010, 12:08   #1
Ulena
 
Регистрация: 31.03.2010
Сообщений: 6
По умолчанию Обработка строк в delphi

Помогите найти ошибку, пожалуйста...
Группу символов, разделенные пробелом и не содержащие пробелов внутри себя, будем называть словами. Подсчитать количество слов. Ввод слов организовать двумя способамиЖ в одну строку и каждое слово - на отдельной строке.
procedure TForm1.Button1Click(Sender: TObject);
var S1: String; i, k: byte;
begin
k:=1;
if pos(' ', RichEdit1.Lines[RichEdit1.Lines.Count-1])=0 then begin
S1:=RichEdit1.Lines[RichEdit1.Lines.Count-1];
for i:=1 to Length(S1) do
if (S1[i]=' ') then inc(k);
ShowMessage('Количество слов: '+IntToStr(k));

end else begin
S1:=RichEdit1.Lines[0];
while (pos(' ', S1)<>0) do
delete(S1, 1, pos(' ', S1));
for i:=1 to Length(S1) do if (S1[i]=' ') then inc(k);
ShowMessage('Количество слов: '+IntToStr(k));
end;
end;
Вложения
Тип файла: rar Лаб 6.rar (197.7 Кб, 5 просмотров)
Ulena вне форума Ответить с цитированием
Старый 31.03.2010, 12:14   #2
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Если каждое слово на своей строке то не надо никаких циклов
Код:
k:=RichEdit1.Lines.Count-1
SERG1980 вне форума Ответить с цитированием
Старый 31.03.2010, 12:22   #3
Ulena
 
Регистрация: 31.03.2010
Сообщений: 6
По умолчанию

Понятно, а если слова введены в одну строку через пробел?
Ulena вне форума Ответить с цитированием
Старый 31.03.2010, 12:27   #4
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Ulena Посмотреть сообщение
Помогите найти ошибку, пожалуйста...
Группу символов, разделенные пробелом и не содержащие пробелов внутри себя, будем называть словами. Подсчитать количество слов. Ввод слов организовать двумя способамиЖ в одну строку и каждое слово - на отдельной строке.
procedure TForm1.Button1Click(Sender: TObject);
var S1: String; i, k: byte;
begin
k:=1;
if pos(' ', RichEdit1.Lines[RichEdit1.Lines.Count-1])=0 then begin
S1:=RichEdit1.Lines[RichEdit1.Lines.Count-1];
for i:=1 to Length(S1) do
if (S1[i]=' ') then inc(k);
ShowMessage('Количество слов: '+IntToStr(k));

end else begin
S1:=RichEdit1.Lines[0];
while (pos(' ', S1)<>0) do
delete(S1, 1, pos(' ', S1));
for i:=1 to Length(S1) do if (S1[i]=' ') then inc(k);
ShowMessage('Количество слов: '+IntToStr(k));
end;
end;
У тебя вообще не понятно что делает обработчик кнопки...
Точнее - понятно, но только не то что нужно...
Тебе нужно определить количество введенных строк, а потом в цикле построчно определять и подсчитывать количество слов...
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 31.03.2010 в 12:31.
Grag вне форума Ответить с цитированием
Старый 31.03.2010, 12:32   #5
Ulena
 
Регистрация: 31.03.2010
Сообщений: 6
По умолчанию

А как это будет выглядеть в виде кода?
Ulena вне форума Ответить с цитированием
Старый 31.03.2010, 12:47   #6
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Ulena Посмотреть сообщение
А как это будет выглядеть в виде кода?
Вот так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  S: String;
  i: word;
  Nword:word;
  Range:word;
begin
  Nword:=0;
  Range:=RichEdit1.Lines.Count-1;
  for i:=0 to Range do
    begin
      S:=RichEdit1.Lines[i];
      while Pos(' ',S)<>0 do
        begin
          Delete(S,Pos(' ',S),1);
          Inc(Nword)
        end;
      Inc(Nword)
    end;
  ShowMessage('Количество слов: '+IntToStr(Nword));
end;
Все проверено, все работает...
Можно в строке вводить несколько слов, можно вводить несколько строк по одному слову, считает верно
Если помог - оставьте отзыв...
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 31.03.2010 в 12:53.
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка строк(Си) Bl@st Помощь студентам 2 30.12.2009 23:14
Обработка строк Vad56 Помощь студентам 1 03.12.2009 23:26
Обработка строк Bytas Общие вопросы C/C++ 3 02.12.2009 10:35
Обработка текста, строк (Delphi) ekzobyte Помощь студентам 2 28.05.2009 00:41
задачи по теме "Обработка строк" на Delphi 7 matrix8325 Помощь студентам 3 27.04.2009 09:47