Sortowanie poprzez wstawianie

0

Witam serdecznie,

chciałem was dopytać lub poprosić o dopisanie kodu bo szczerze powiem jestem świerzak w tej dzidzinie.
Program w Lazarusie Graficznym.

Sam wpisuje liczby po enterze w pliku tekstowym. - zrobione
Program po wcisnieciu przycisku wyrzuca mi liczby w TListBox. - zrobione
Tu po wcisnieciu przycisku do sortowania button ma za zadanie pobrac dane z pliku do tablicy, posortować je i zapisac w innym pliku tekstowym. Do tego musze miec informacje ile razy było robione sprawdzenie oraz ile zamian podczas sortowania.

Mógłby mi ktoś dopisac taki kodzik? Byłbym bardzo wdzieczny.

0

Z czym konkretnie masz problem?

0

Tu po wcisnieciu przycisku do sortowania button ma za zadanie pobrac dane z pliku do tablicy, posortować je i zapisac w innym pliku tekstowym. Do tego musze miec informacje ile razy było robione sprawdzenie oraz ile zamian podczas sortowania.

Z tym aby to napisać. Tak jak już mówiłem jestem swieży i komibinuje ale jakoś nie wychodzi :( nawet nie mogę wprowadzić liczb do tablicy z pliku.

0

Na razie napisałem coś takiego:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    ListBox1: TListBox;
    ListBox2: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);      //procedura do przycisku WYSWIETL NIEPOSORTOWANY PLIK
var
   PLIK: TextFile;                                   //zmienna do pliku
   S: String;                                        //zmienna do zawartosci
begin
     assignFile(PLIK, 'przedsortowaniem.txt');       //przypisanie zmiennej
if not FileExists('przedsortowaniem.txt') Then       //sprawdzenia czy plik istnieje
begin
     ShowMessage('Taki plik nie istnieje!');         //wyrzuca wiadomosc ze plik nie istnieje
end
else
begin
     listBox1.Items.Clear();                         // zabezpieczenie przycisku aby nie dodawalo ponownie zawartosci pliku
     AssignFile(PLIK, 'przedsortowaniem.txt');       //zmienna do pliku jesli plik w folderze istnieje
     reset(PLIK);                                    //reset pliku
while not Eof(PLIK) do
begin
     readln(PLIK, S);                                //odczyt pliku
     listBox1.Items.Add(S);                          //wyswietla w TListBoxie dane z pliku
end;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);      //procedura do przycisku POSORTUJ PLIKI
var PLIK : file of byte;
var tablica:array[1..100]of byte;
var i: integer;
begin
    AssignFile(PLIK, 'przedsortowaniem.txt');
    reset(PLIK);

    for i := 1 to 100 do
    AssignFile(PLIK, 'przedsortowaniem.txt');
    reset(PLIK);
end;

procedure TForm1.Button2Click(Sender: TObject);      //procedura do przycisku WYSWIETL POSORTOWANY PLIK
var
   PLIK2: TextFile;                                   //zmienna do pliku
   S: String;                                        //zmienna do zawartosci
begin
     assignFile(PLIK2, 'posortowaniu.txt');           //przypisanie zmiennej
if not FileExists('posortowaniu.txt') Then           //sprawdzenia czy plik istnieje
begin
     ShowMessage('Taki plik nie istnieje!');         //wyrzuca wiadomosc ze plik nie istnieje
end
else
begin
     listBox2.Items.Clear();                         // zabezpieczenie przycisku aby nie dodawalo ponownie zawartosci pliku
     AssignFile(PLIK2, 'posortowaniu.txt');           //zmienna do pliku jesli plik w folderze istnieje
     reset(PLIK2);                                    //reset pliku
while not Eof(PLIK2) do
begin
     readln(PLIK2, S);                                //odczyt pliku
     listBox2.Items.Add(S);                          //wyswietla w TListBoxie dane z pliku
end;
end;
end;

end.
0

Jasne, więc jak dostaniesz gotowca to przestaniesz być świeży. Dobrze zrozumiałem?

0

Nie, chodzi o to aby mnie naprowadzić lub podobać podobne algorytmy, których moge użyć.

1

Dynamiczne tablice, SetLength(), Length(), for, while, if, Rewrite(), WriteLn() - to wszystko co potrzebujesz, sam algorytm znajdziesz na wikipedii.

0

dzieki wielkie

0

A tu masz dodatkowo implementację gotową + szczegółowy opis:
http://www.eioba.pl/a/1gd/algorytmy-sortujace-sortowanie-przez-wstawianie

1 użytkowników online, w tym zalogowanych: 0, gości: 1