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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2008, 10:42   #1
IGoDoVaN
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 33
По умолчанию Работа с текстом в Delphi

Есть два memo поля: в одно вводится текст в другое пишется результат. Также есть button, которая запускает программу...
Требуется определить число слов в тексте, найти максимальную, минимальную и среднюю длину слова... Напишите текст программы очень прошу. Заранее преблагодарен, хотя бы за попытку...
П.с. программа пишется в Delphi
Мир не без добрых людей..

Последний раз редактировалось IGoDoVaN; 12.05.2008 в 10:53.
IGoDoVaN вне форума Ответить с цитированием
Старый 12.05.2008, 10:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А это что?
http://programmersforum.ru/showthrea...t=%F1%EB%EE%E2
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2008, 10:54   #3
IGoDoVaN
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 33
По умолчанию

это другая задача..
Мир не без добрых людей..
IGoDoVaN вне форума Ответить с цитированием
Старый 12.05.2008, 11:29   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может, но ответы на ключевые вопросы там есть.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2008, 11:38   #5
IGoDoVaN
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 33
По умолчанию

Может, но я так и не разобрался в той задаче.. Листбокс, деслимитер меня "пугают".. я что значит с "чистого листа" постигаю азы делфи... Лекции кот нам читают очень примитивный пару слов о pos, length и всё... Вот я не знаю как пропуская пробелы и знаки препинания вычислить длину слова, как вычислить максимальную и минимальную, просто min и max не обойдешься?
Мир не без добрых людей..
IGoDoVaN вне форума Ответить с цитированием
Старый 12.05.2008, 11:53   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Листбокс, деслимитер меня "пугают"
Я тоже раньше SQL не любил, потом попробовал и стало понятно.

Тебе тогда два цикла нужно делать, в одном выбирать строки в другом функцией POS отбирать пробелы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2008, 12:42   #7
IGoDoVaN
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 33
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label2: TLabel;
    Button4: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  S:string;
  i:byte;
  n,k,l,x,max,min,sl:integer;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
S:=' Красная армия всех сильней.';
memo1.Text:=s;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
S:='';
edit1.text:='';
edit2.text:='';
edit3.text:='';

Memo1.text:=s;

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
application.Terminate;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
 a,b:integer;



begin
i:=1;
n:=length(s);
S:=Memo1.Text;
sl:=0;
if not (s[i] in [' ',#8, #13, #10, ',','.','!','?']) then
while i<n do
begin
if (s[i] in [' ',#8, #13, #10, ',','.','!','?']) and (not (s[i+1] in [' ',#8, #13, #10, ',','.','!','?'])) then
begin
sl:=sl+1;
end;
i:=i+1;
end

else
while i<n do
begin
if (s[i] in [' ',#8, #13, #10, ',','.','!','?']) and (not (s[i+1] in [' ',#8, #13, #10, ',','.','!','?'])) then
begin
sl:=sl+1;
end;
i:=i+1;
end;

begin
a:=0;b:=0;
i:=1;
n:=length(s);
S:=Memo1.Text;
if not (s[i] in [' ',#8, #13, #10, ',','.','!','?']) then
while i<n do
begin
if (s[i] in [' ',#8, #13, #10, ',','.','!','?']) and (not (s[i+1] in [' ',#8, #13, #10, ',','.','!','?'])) then
begin
For i:=1 to length(s) do
a:=a+1;
end;
i:=i+1;
end

else
while i<n do
begin
if (s[i] in [' ',#8, #13, #10, ',','.','!','?']) and (not (s[i+1] in [' ',#8, #13, #10, ',','.','!','?'])) then
begin
For i:=1 to length(s) do
a:=a+1;
end;
i:=i+1;
end;
end;

begin
edit1.text:=floattostr(min);
edit2.text:=floattostr(a);
edit3.text:=floattostr(sl);
end;
end;



end.
я так написал, тока хз почему все равно считаются пробелы между словами при вычислении длины строки
Мир не без добрых людей..
IGoDoVaN вне форума Ответить с цитированием
Старый 12.05.2008, 13:24   #8
А. Долматов
Форумчанин
 
Аватар для А. Долматов
 
Регистрация: 15.02.2007
Сообщений: 183
По умолчанию

Цитата:
not (s[i+1] in [' ',#8, #13, #10, ',','.','!','?'])
в это множество добавь пробел - ' ' вот таким образом. Тогда он и пробелы отбрасывать будет
Знать все невозможно, в силу того, что жить бы стало неинтересно.
А. Долматов вне форума Ответить с цитированием
Старый 12.05.2008, 13:25   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот смотри, подсказываю.
Код:
var e,s:string;a,b,c,i:integer;
begin
s:='ds fdf fsdsdajfg 2 sdf fsd';
caption:=s;
b:=1;c:=1;e:='';
for i:=1 to length(s) do begin
 if s[i]=' ' then begin inc(a);
  if length(copy(s,b,i-1))>c then begin
   c:=length(copy(s,b,i-1));
   e:=copy(s,b,i-b)
  end;
  b:=i;
 end;
end;
inc(a);

caption:=caption+' ('+inttostr(a)+' '+e+')';

end;
Здесь в строку s выбираеш очередную строку,
в результате "e" - Это самая максимальное по длине слово, а "а" - количество слов с втроке.

Понял что нужно делать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2008, 14:16   #10
IGoDoVaN
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 33
По умолчанию

то есть "а" это "sl" у меня?
Мир не без добрых людей..
IGoDoVaN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с таблицами в Delphi Olga5 БД в Delphi 13 04.04.2012 17:58
Помогите с тестом djeyana Помощь студентам 4 28.06.2007 19:35