Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.12.2009, 23:57
Сойер Сойер вне форума
Прохожий
 
Регистрация: 10.12.2009
Сообщения: 1
Репутация: 10
Вопрос Проблема с программой, нужен небольшой совет

Дан текст, содержащий от 2 до 30 слов,в каждом из которых от 1 до 10 букв или арабских цифрЖмежду словами не менее одного пробела,за последним словом точка.Вывести все слова текста,отличные от последнего.При выводе удалять в каждом слове последнюю букву. Проблема в удалении последней буквы у меня ?

Код:
unit Uni097u89;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Input: TMemo;
    Output: TMemo;
    procedure InputChange(Sender: TObject);
   { procedure FormCreate(Sender: TObject);}
  private
  public
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}

procedure TForm1.InputChange(Sender: TObject);
var
  buf:string;
  i,n,z,k: Integer;
  S : AnsiString;
  A : array [0..31] of AnsiString;
  O, r : Boolean;
begin
  O := False;
  n := 0;
  A[n] := '';
  Output.Lines.Clear();
  S := Input.Lines.Text;
  if (Input.Lines.Count > 0) and (S[Length(S)] = '.') and (Pos('.',S) = Length(S)) then
  begin
    //Заполняем массив словами
    for i := 1 to Length(S) do
    begin
      if S[i] = ' ' then
      begin
        if (Length(A[n]) >= 1) and (Length(A[n]) <= 10)  then
        begin
          n := n + 1;
          A[n] := '';
        end
        else
         if A[n] <> '' then
        begin
          Output.Lines.Text := 'Слова должны содержать от 1 до 10 букв';
          O := True;
          Break;
        end;
      end
      else
       if S[i] = '.' then
      begin
        if (n < 1) or (n > 28) then
        begin
          O := True;
          Output.Lines.Text := 'Колличество слов менее 2 или более 30';
        end
        else
         if Length(A[n]) > 10 then
        begin
          Output.Lines.Text := 'Слова должны содержать от 1 до 10 букв';
          O := True;
          Break;
        end;
        Break;
      end
      else
        try
        begin
          k := StrToInt(S[i]);
        end
        except
        //if (S[i] <> '1') and   then
          A[n] := A[n] + Copy(S,i,1);
        end;
    end;
    //Выводим результат
    if O = False then
    begin
      O := True;
      for i := 1 to Length(A) do
      begin
       ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
       Output.Lines.Add(A[i]);
       O := False;
      end;
      if O = True then
      begin
        Output.Lines.Text := 'Слов, отличных от последнего не найдено';
    end;
  end
else
  begin
    Output.Lines.Text := 'Напишите 2 - 30 слов в поле ввода.';
    Output.Lines.Add('Слова разделяются пробелом, в конце ставится точка.');
  end;
end;

{procedure TForm1.FormCreate(Sender: TObject);
begin
  Output.Lines.Text := 'Напишите 2 - 30 слов в поле ввода.';
  Output.Lines.Add('Слова разделяются пробелом, в конце ставится точка.');
end; }
end;
end.
Admin: Пользуемся тегами!

Последний раз редактировалось Admin, 11.12.2009 в 10:16.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:27.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025