Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Delphi 7: строки, обратный порядок слов в строке  (Прочитано 7043 раз)
0 Пользователей и 1 Гость смотрят эту тему.
СвоЕобразнаЯ
Участник

ru
Offline Offline

« : 25-03-2010 19:26 » 

Это всё я тут флудю, бан по мне плачет RTFM
В данный момент пытаюсь вывести слова в строке в обратном порядке. Т.е.: папа мама брат->брат мама папа
Вот что у меня пока что получается:
Код:
unit Laba4_2Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Edit2: TEdit;
    Label2: TLabel;
    Button1: TButton;
    procedure Edit1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  str: string;

implementation

{$R *.dfm}

procedure TForm1.Edit1Change(Sender: TObject);
begin
str:=Edit1.Text;
end;

procedure TForm1.Button1Click(Sender: TObject);
Var
  A   : Array[1..100] of String;
  i,n : Longint;
  z : String;
begin
  str:=str+' ';
  z:='';
  n:=0;
  For i:=1 to Length(str) Do
  If str[i]<>' ' Then
  z:=z+str[i]
    Else
     Begin
       n:=n+1;
       A[n]:=z;
       z:='';
     End;
  For i:=n Downto 1 Do
  Edit2.Text:=A[n]+' ';
end;
end.



Но моя недопрограмма выводит только последнее слово и всё. Как исправить?  А черт его знает...
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 25-03-2010 19:39 » 

Улыбаюсь
Код:
For i:=n Downto 1 Do
  Edit2.Text:=A[n]+' ';

читай ВСЛУХ что ты написала.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
СвоЕобразнаЯ
Участник

ru
Offline Offline

« Ответ #2 : 25-03-2010 19:42 » 

 Да-да Читаю:
Для и от н до единицы делать
Эдит2.Текст присвоить +' ';


Код:
For i:=1 to n Do
  Edit2.Text:=A[i]+' ';


Так тоже не выходит:(
« Последнее редактирование: 26-03-2010 04:42 от RXL » Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 25-03-2010 20:07 » 

Код:
For i:=n downto 1 Do
  Edit2.Text:=A[i]+' ';

А так?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
СвоЕобразнаЯ
Участник

ru
Offline Offline

« Ответ #4 : 25-03-2010 20:11 » 

И так Жаль последняя буква и всё


Даже наоборот, так первая буква выводится
« Последнее редактирование: 26-03-2010 04:43 от RXL » Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 25-03-2010 21:06 » 

А не так?
Код:
Edit2.Text:=Edit2.Text + A[i]+' ';
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #6 : 26-03-2010 13:15 » 

Код:
var
  sl: TStrings;
  i: integer;
begin
  Edit2.Text := '';
  sl := TStringList.Create;
  try
    sl.Delimiter := ' ';
    sl.DelimitedText := Edit1.Text;
    for i := sl.Count - 1 downto 0 do begin
      if Edit2.Text <> '' then
        Edit2.Text := Edit2.Text + ' ';
      Edit2.Text := Edit2.Text + sl [i];
    end;
  finally
    sl.Free;
  end;
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines