Помогите, пожалуйста, исправить ошибки!!!
Условие: Дана строка символов, слова разделены пробелами. Вывести на экран порядковый номер слова, накрывающего k-ю позицию. Если k-я позиция – пробел, то вывести номер предыдущего слова.
Вот, что я написала:
[syntax='delphi']
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
A,b,c:integer;
S:string;
begin
c:=Length(LabeledEdit1.text);
a:=strtoint(LabeledEdit2.Text);
b:=a;
If LabeledEdit1.Text[a]=' ' then //есил символ пробел
begin
While LabeledEdit1.Text[b-1]<>' ' do //пока не нарвемся на другой пробел
begin
If B=0 then break;
b:=b-1;
end;
While B<>A do
begin
s:=s+LabeledEdit1.Text;
b:=b+1;
end;
end
else
begin
While LabeledEdit1.Text[a-1]<>' ' do //пока не нарвемся на другой пробел
begin
If A=0 then break;
a:=a-1;
end;
B:=A;
While LabeledEdit1.Text<>' ' do
begin
b:=b+1;
If B=C then break;
end;
While A<>B+1 do
begin
s:=s+LabeledEdit1.Text[A];
a:=a+1;
c:=c+1
end;
end;
ShowMessage(s);
end;
end.
[/syntax]
массивы
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
я бы в случае пробела написал так:
если символ в заданной позиции пробел, то идём к началу и считаем пробелы, по достижении начала - "номер предыдущего слова" = "число пробелов"+1
а собсно и во втором случае то же самое
так что не нужно никакое условие
[syntax='Delphi']
c := 0;
b := a-1;
While b>0 do
begin
if LabeledEdit1.Text = ' ' then //если пробел
inc(c);
dec(b);
end;
ShowMessage(Format('Нумер слова - %d', [c+1]);
[/syntax]
как-то так... писал прямо тут
если символ в заданной позиции пробел, то идём к началу и считаем пробелы, по достижении начала - "номер предыдущего слова" = "число пробелов"+1
а собсно и во втором случае то же самое

[syntax='Delphi']
c := 0;
b := a-1;
While b>0 do
begin
if LabeledEdit1.Text = ' ' then //если пробел
inc(c);
dec(b);
end;
ShowMessage(Format('Нумер слова - %d', [c+1]);
[/syntax]
как-то так... писал прямо тут

