Q&A

  • 정말 부탁드립니다.
안녕하세요 정말 부탁드립니다. 수요일 까지 해야 하는데요 숫자를 입역해서 그것을

오름차순으로 정열하는것을 컴포넌트로 만들어야 합니다. 물론 실행되는걸로 남들은

다 쉽다고 하는데 정말 앞이 까막듯합니다. 죄송한데요 만들어 주시면 안될까요 보상을

원하면 보상도 해주겠읍니다. 꼭 좀 부탁드립니다.

4  COMMENTS
  • Profile
    이승우 2000.10.10 18:45
    peny wrote:

    > 안녕하세요 정말 부탁드립니다. 수요일 까지 해야 하는데요 숫자를 입역해서 그것을

    > 오름차순으로 정열하는것을 컴포넌트로 만들어야 합니다. 물론 실행되는걸로 남들은

    > 다 쉽다고 하는데 정말 앞이 까막듯합니다. 죄송한데요 만들어 주시면 안될까요 보상을

    > 원하면 보상도 해주겠읍니다. 꼭 좀 부탁드립니다.



    좀더 자세한 설명을 부탁드립니다.

  • Profile
    peny 2000.10.11 08:42
    그러니까 품에 리스트박스 2개 하나는 숫자를 입력하고 나머지 하나는 결과를 나타내는

    박스를만들고 그리고 결과를 누르는 버튼이 1나 있으면 됩니다.그래서 결과를 누르면 버블소트된 답이 나오도록 하면 됩니다.배치는 아무렇게 해도 상관이 없습니다. 꼭부탁드립니다.

  • Profile
    이승우 2000.10.11 18:55
    peny wrote:

    > 그러니까 품에 리스트박스 2개 하나는 숫자를 입력하고 나머지 하나는 결과를 나타내는

    > 박스를만들고 그리고 결과를 누르는 버튼이 1나 있으면 됩니다.그래서 결과를 누르면 버블소트된 답이 나오도록 하면 됩니다.배치는 아무렇게 해도 상관이 없습니다. 꼭부탁드립니다.



    안녕하세요! 이승우 입니다.

    아래의 소스를 보시면 문제가 해결 되리라 생각합니다.

    //--------------- Source -----------------------------------------------//

    unit Unit1;



    interface



    uses

    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    StdCtrls;



    type

    TForm1 = class(TForm)

    ListBox1: TListBox;

    ListBox2: TListBox;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    private

    { Private declarations }

    public

    { Public declarations }

    end;



    var

    Form1: TForm1;

    StringList: TStringList;



    implementation



    {$R *.DFM}



    procedure TForm1.Button1Click(Sender: TObject);

    var

    done: boolean;

    i, n: integer;

    Dummy: string;

    begin

    Listbox2.Items.clear;

    Listbox2.Items.Text := Listbox1.Items.Text;

    n := Listbox2.Items.count;

    repeat

    done := true;

    for i := 0 to n - 2 do

    if StrToInt(Listbox2.Items.Strings[i]) > StrToInt(Listbox2.Items.Strings[i + 1]) then begin

    Dummy := Listbox2.Items.Strings[i];

    Listbox2.Items.Strings[i] := Listbox2.Items.Strings[i + 1];

    Listbox2.Items.Strings[i + 1] := Dummy;

    done := false;

    end;

    until done;

    end;



    procedure TForm1.Button2Click(Sender: TObject);

    var

    i, n, maxIndex, topIndex: integer;

    Dummy: string;

    begin

    Listbox2.Items.clear;

    Listbox2.Items.Text := Listbox1.Items.Text;

    n := Listbox2.Items.Count;

    for topIndex := n - 1 downto 1 do begin

    maxIndex := topIndex;

    for i := 0 to topIndex - 1 do

    if StrToInt(Listbox2.Items.Strings[i]) > StrToInt(Listbox2.Items.Strings[maxIndex]) then

    maxIndex := i;

    Dummy := Listbox2.Items.strings[topIndex];

    Listbox2.Items.strings[topIndex] := Listbox2.Items.strings[maxIndex];

    Listbox2.Items.strings[maxIndex] := Dummy;

    end;

    end;



    procedure TForm1.Button3Click(Sender: TObject);

    var

    i, Position, n: integer;

    Value: string;

    Done : boolean;

    begin

    Listbox2.Items.clear;

    Listbox2.Items.Text := Listbox1.Items.Text;

    n := Listbox2.Items.Count;

    for i := 1 to n - 1 do begin

    Value := Listbox2.Items.Strings[i];

    Position := i;

    Done := false;

    while not done do begin

    if Position <= 0 then

    Done := true

    else

    if StrToInt(Value) >= StrToint(Listbox2.Items.Strings[Position - 1]) then

    Done := true

    else begin

    Listbox2.Items.Strings[Position] := Listbox2.Items.Strings[Position - 1];

    Position := Position - 1;

    end;

    end;

    Listbox2.Items.Strings[Position] := Value;

    end;

    end;



    end.



  • Profile
    peny 2000.10.12 11:55
    정말 감사합니다.

    하늘에서 선녀가 내려와도 이렇게 기쁘지 않을것입니다.

    사실 이번에 컴퓨터과로 편입했는데 너무 어려워서 미칠지경입니다.

    특히 델파이는 너무 어렵습니다. 시험도 다가오는데...

    어째든 이렇게 도와주시니 감사할따름입니다. 행복하시고 어젠나

    평온하시길 빌겠습니다.