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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2013, 23:31   #11
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
По умолчанию

Кто-нибудь знает, как второе задание исправить? ( Может, что лишнее в коде я написал, или что-то недописал)???????????

Последний раз редактировалось Anton94.by; 28.04.2013 в 22:26.
Anton94.by вне форума Ответить с цитированием
Старый 28.04.2013, 22:28   #12
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
По умолчанию

Ребята, пожалуйста помогите со вторым заданием. ( Уже надо здавать прогу, а у меня не получается второе задание). Спасибо.
Anton94.by вне форума Ответить с цитированием
Старый 03.05.2013, 20:23   #13
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
По умолчанию

Помогите пожалуйсто исправить вторую программу:
Если первая буква последнего слова и первая буква слова минимальной длины одинаковы, то поменять их местами. В противном случае удалить последнее слово.

Вот другой код который это делает:
Код:
for i:=length(my_string) downto 1 do 
if my_string = ' ' then begin IndexOfSpace:=i;break;end; //получаем индекс последнего пробела 
CopyString:=my_string; 
while pos(' ',CopyString)<>0 do begin 
word:=copy(CopyString,1,pos(' ',CopyString)); 
delete(CopyString,1,pos(' ',CopyString)); 
if length(word) < MinLengthOfString do begin MinLengthOfString:=length(word); MinLengthWord:=word;end;end; 
if MinLengthWord[1] <> my_string[IndexOfSpace+1] then  
delete(my_string,IndexOfSpace,255) 
else begin 
 
// здесь допишите, код который меняет местами в случае одинаковых букв 
end;
Anton94.by вне форума Ответить с цитированием
Старый 03.05.2013, 21:18   #14
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

То что смог-это поиск минимального слова в мемо, пока скопируйте это, а дальше еще что-нибудь придумаю, и на весы нажать не обязательно))

Код:
type
  zap=record
  min_stroka:string[255];
  nomer:Integer;
  end;
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 s,w, sNew : string;
  i1,i,j,j1, min: integer;
  a:array of zap;
  MinLen, IndexMinLen : integer;
begin
  SetLength(a,Memo1.Lines.count);
  min := 1;
 for i:=0 to Memo1.Lines.Count-1 do
 begin
    s:=Memo1.Lines[i];
  IndexMinLen := -1;
  MinLen := 9999;
  s := s + ' ';
  w := '';
  for i1:=1 to length(s) do
    if s[i1]<>' ' then w := w+s[i1]
    else
     begin
       if (w<>'') and (Length(w)<MinLen) then begin
         IndexMinLen := i1-Length(w);
         MinLen := Length(w);
       end;
       w := '';
     end;
  sNew := s;
  if IndexMinLen>0 then
  a[i].nomer:=Length(Trim( Copy(sNew, IndexMinLen, MinLen)));
  a[i].min_stroka:=Trim( Copy(sNew, IndexMinLen, MinLen));
  for j1 := 2 to Memo1.Lines.count-1 do
    if a[j1].nomer < a[min].nomer then
      min := j1;
   end;
   ShowMessage('Слово :' +a[min].min_stroka);
a:=nil;
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.05.2013, 21:40   #15
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,427
По умолчанию

Алексей_2012, зачем так сложно?)
Вроде работает:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  ts: tstringlist;
  i, p: integer;
  s: string;
begin
  ts := tstringlist.create;
  ts.Delimiter := ' ';
  ts.DelimitedText := Memo1.Text;
  p := 0;
  for i := 1 to ts.Count - 1 do
    if length(ts[i]) < length(ts[p]) then
      p := i;
  if p = ts.Count - 1 then
    exit;
  s := Memo1.Text;
  i := length(ts[ts.Count - 1]);
  delete(s, length(s) - i + 1, i);
  if ts[ts.Count - 1][1] = ts[p][1] then
  begin
    i := pos(ts[p], s);
    delete(s, i, length(ts[p]));
    insert(ts[ts.Count - 1], s, i);
    s := s + ts[p];
  end;
  Memo1.Text := s;
  ts.Free;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 03.05.2013 в 21:57.
BDA вне форума Ответить с цитированием
Старый 03.05.2013, 21:53   #16
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

да) работает, я тоже пробовал делать делиметр, но у самого не получилось, ТС думаю оценит кстати, а в чем разница между ts.Destroy; и ts.free;?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.05.2013, 21:59   #17
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,427
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
а в чем разница между ts.Destroy; и ts.free;?
Я не задумывался, но погуглив сейчас, нашел:
Цитата:
Вот выдержка из хелпа: Do not call Destroy directly. Call Free instead. Free verifies that the object reference is not nil before calling Destroy.
Получается, что единственным отличием является проверка на непустой указатель, но правильнее писать Free, а не Destroy (исправил в коде).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.05.2013, 01:31   #18
Anton94.by
Форумчанин
 
Регистрация: 16.10.2011
Сообщений: 115
По умолчанию

Большое спасибо за помощь!
Anton94.by вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками в Delphi alterius Помощь студентам 2 17.04.2011 01:55
Работа со строками Delphi Яська Помощь студентам 1 03.12.2010 00:15
Работа со строками, delphi <Maria> Помощь студентам 1 19.10.2010 00:14
Delphi (работа со строками) infectbot Помощь студентам 5 28.01.2010 09:00
работа со строками delphi fize Помощь студентам 22 07.01.2010 03:59