Einzelnen Beitrag anzeigen

JayAy
(Gast)

n/a Beiträge
 
#1

Sortieren nach Liste

  Alt 3. Okt 2010, 05:05
Hallo zusammen,

ich wollte mir ein Programm basteln, das beim Stimmenauszählen hilft. Leider funktioniert das ganze nicht...
Neben dem Fehler will ich aber auch wissen, wie ich die Namen in der oberen Zeile gleich den sortierten Zahlen entsprechend einordne.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1Click(Sender: TObject);
    procedure StringGrid2Click(Sender: TObject);
    procedure StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure StringGrid2MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Liste: array[1..100000] of integer;
  ListeMisch: array[1..100000] of integer;
  ListeQuick: array[1..100000] of integer;
  l: integer;
  vertausche,vergleiche,Mischtausch,Mischvergleich: integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i,k: integer;
begin

  For k:= 1 to 64 do
  begin
    For i:= 1 to 35 do
    begin
      stringgrid1.Cells[i,k]:=inttostr(0);
    end;
  end;

  For k:= 1 to 64 do
  begin
    For i:= 1 to 35 do
    begin
      stringgrid2.Cells[i,k]:=inttostr(0);
    end;
  end;

  stringgrid1.cells[0,1]:='Abschreiber/in';
  stringgrid1.cells[0,2]:='Angeber/in';
  stringgrid1.cells[0,3]:='Antisportler/in';
  stringgrid1.cells[0,4]:='Arroganteste/r';
  stringgrid1.cells[0,5]:='Besserwisser/in';
  stringgrid1.cells[0,6]:='beste Frisur';
  stringgrid1.cells[0,7]:='beste/r Schauspieler/in';
  stringgrid1.cells[0,8]:='dümmste Fragen';
  stringgrid1.cells[0,9]:='Bestgelaunteste/r';
  stringgrid1.cells[0,10]:='Clown';
  stringgrid1.cells[0,11]:='Rätsel';
  stringgrid1.cells[0,12]:='Eitelste/r';
  stringgrid1.cells[0,13]:='Millionär/in';
  stringgrid1.cells[0,14]:='Vater/Mutter';
  stringgrid1.cells[0,15]:='Extrovertierteste/r';
  stringgrid1.cells[0,16]:='Faulste/r';
  stringgrid1.cells[0,17]:='Freak';
  stringgrid1.cells[0,18]:='Geizigste/r';
  stringgrid1.cells[0,19]:='Höflichste/r';
  stringgrid1.cells[0,20]:='Infantilste/r';
  stringgrid1.cells[0,21]:='Intelligenzbestie';
  stringgrid1.cells[0,22]:='Interessanteste/r';
  stringgrid1.cells[0,23]:='Lache';
  stringgrid1.cells[0,24]:='Kreativste/r';
  stringgrid1.cells[0,25]:='Lehrerliebling';
  stringgrid1.cells[0,26]:='Lustigste/r';
  stringgrid1.cells[0,27]:='Macho/Tussi';
  stringgrid1.cells[0,28]:='Mr/Ms Fashion';
  stringgrid1.cells[0,29]:='Mr/Ms Max Planck';
  stringgrid1.cells[0,30]:='Mitläufer/in';
  stringgrid1.cells[0,31]:='möchtegern-witzig';
  stringgrid1.cells[0,32]:='Morgenmuffel';
  stringgrid1.cells[0,33]:='nervigste Stimme';
  stringgrid1.cells[0,34]:='Netteste/r';
  stringgrid1.cells[0,35]:='Nikotinopfer';
  stringgrid1.cells[0,36]:='Öko';
  stringgrid1.cells[0,37]:='One-Night';
  stringgrid1.cells[0,38]:='Partyking';
  stringgrid1.cells[0,39]:='Partykotzer/in';
  stringgrid1.cells[0,40]:='politische Ansicht';
  stringgrid1.cells[0,41]:='Schleimer/in';
  stringgrid1.cells[0,42]:='Schnacker/in';
  stringgrid1.cells[0,43]:='Schnapsdrossel';
  stringgrid1.cells[0,44]:='Schnorrer/in';
  stringgrid1.cells[0,45]:='Schönheit';
  stringgrid1.cells[0,46]:='schönstes Lächeln';
  stringgrid1.cells[0,47]:='Schwänzer/in';
  stringgrid1.cells[0,48]:='Sozialste/r';
  stringgrid1.cells[0,49]:='Sportlichste/r';
  stringgrid1.cells[0,50]:='Stimmungskanone';
  stringgrid1.cells[0,51]:='Tollpatsch';
  stringgrid1.cells[0,52]:='Body';
  stringgrid1.cells[0,53]:='Schwiegertraum';
  stringgrid1.cells[0,54]:='Unauffälligste/r';
  stringgrid1.cells[0,55]:='Unselbsständigste/r';
  stringgrid1.cells[0,56]:='Verkehrsrowdy';
  stringgrid1.cells[0,57]:='Verplanteste/r';
  stringgrid1.cells[0,58]:='Verwöhnteste/r';
  stringgrid1.cells[0,59]:='Weichei';
  stringgrid1.cells[0,60]:='Wichtigtuer';
  stringgrid1.cells[0,61]:='Wichtigtuer/in';
  stringgrid1.cells[0,62]:='Zicke';
  stringgrid1.cells[0,63]:='Zuspätkommer/in';
  stringgrid1.cells[0,64]:='Zuverlässigste/r';
  stringgrid1.cells[1,0]:='Anneke';
  stringgrid1.cells[2,0]:='Anh';
  stringgrid1.cells[3,0]:='Annika';
  stringgrid1.cells[4,0]:='Ann-Cathrin';
  stringgrid1.cells[5,0]:='Felicitas';
  stringgrid1.cells[6,0]:='Finja';
  stringgrid1.cells[7,0]:='Hanna';
  stringgrid1.cells[8,0]:='Joana';
  stringgrid1.cells[9,0]:='Johanna';
  stringgrid1.cells[10,0]:='Josephine';
  stringgrid1.cells[11,0]:='Julia E.';
  stringgrid1.cells[12,0]:='Julia M.';
  stringgrid1.cells[13,0]:='Kerrin';
  stringgrid1.cells[14,0]:='Kim';
  stringgrid1.cells[15,0]:='Kira B.';
  stringgrid1.cells[16,0]:='Kira K.';
  stringgrid1.cells[17,0]:='Kristina';
  stringgrid1.cells[18,0]:='Liv';
  stringgrid1.cells[19,0]:='Luise';
  stringgrid1.cells[20,0]:='Marie';
  stringgrid1.cells[21,0]:='Miriam';
  stringgrid1.cells[22,0]:='Mona';
  stringgrid1.cells[23,0]:='Natascha';
  stringgrid1.cells[24,0]:='Pia';
  stringgrid1.cells[25,0]:='Sarah E.';
  stringgrid1.cells[26,0]:='Sarah H.';
  stringgrid1.cells[27,0]:='Sarah T.';
  stringgrid1.cells[28,0]:='Sina G.';
  stringgrid1.cells[29,0]:='Sina N.';
  stringgrid1.cells[30,0]:='Stefanie';
  stringgrid1.cells[31,0]:='Svea';
  stringgrid1.cells[32,0]:='Svenja';
  stringgrid1.cells[33,0]:='Tjorven';
  stringgrid1.cells[34,0]:='Vanessa';
  stringgrid1.cells[35,0]:='Yasmin';
  stringgrid2.cells[0,1]:='Abschreiber/in';
  stringgrid2.cells[0,2]:='Angeber/in';
  stringgrid2.cells[0,3]:='Antisportler/in';
  stringgrid2.cells[0,4]:='Arroganteste/r';
  stringgrid2.cells[0,5]:='Besserwisser/in';
  stringgrid2.cells[0,6]:='beste Frisur';
  stringgrid2.cells[0,7]:='beste/r Schauspieler/in';
  stringgrid2.cells[0,8]:='dümmste Fragen';
  stringgrid2.cells[0,9]:='Bestgelaunteste/r';
  stringgrid2.cells[0,10]:='Clown';
  stringgrid2.cells[0,11]:='Rätsel';
  stringgrid2.cells[0,12]:='Eitelste/r';
  stringgrid2.cells[0,13]:='Millionär/in';
  stringgrid2.cells[0,14]:='Vater/Mutter';
  stringgrid2.cells[0,15]:='Extrovertierteste/r';
  stringgrid2.cells[0,16]:='Faulste/r';
  stringgrid2.cells[0,17]:='Freak';
  stringgrid2.cells[0,18]:='Geizigste/r';
  stringgrid2.cells[0,19]:='Höflichste/r';
  stringgrid2.cells[0,20]:='Infantilste/r';
  stringgrid2.cells[0,21]:='Intelligenzbestie';
  stringgrid2.cells[0,22]:='Interessanteste/r';
  stringgrid2.cells[0,23]:='Lache';
  stringgrid2.cells[0,24]:='Kreativste/r';
  stringgrid2.cells[0,25]:='Lehrerliebling';
  stringgrid2.cells[0,26]:='Lustigste/r';
  stringgrid2.cells[0,27]:='Macho/Tussi';
  stringgrid2.cells[0,28]:='Mr/Ms Fashion';
  stringgrid2.cells[0,29]:='Mr/Ms Max Planck';
  stringgrid2.cells[0,30]:='Mitläufer/in';
  stringgrid2.cells[0,31]:='möchtegern-witzig';
  stringgrid2.cells[0,32]:='Morgenmuffel';
  stringgrid2.cells[0,33]:='nervigste Stimme';
  stringgrid2.cells[0,34]:='Netteste/r';
  stringgrid2.cells[0,35]:='Nikotinopfer';
  stringgrid2.cells[0,36]:='Öko';
  stringgrid2.cells[0,37]:='One-Night';
  stringgrid2.cells[0,38]:='Partyking';
  stringgrid2.cells[0,39]:='Partykotzer/in';
  stringgrid2.cells[0,40]:='politische Ansicht';
  stringgrid2.cells[0,41]:='Schleimer/in';
  stringgrid2.cells[0,42]:='Schnacker/in';
  stringgrid2.cells[0,43]:='Schnapsdrossel';
  stringgrid2.cells[0,44]:='Schnorrer/in';
  stringgrid2.cells[0,45]:='Schönheit';
  stringgrid2.cells[0,46]:='schönstes Lächeln';
  stringgrid2.cells[0,47]:='Schwänzer/in';
  stringgrid2.cells[0,48]:='Sozialste/r';
  stringgrid2.cells[0,49]:='Sportlichste/r';
  stringgrid2.cells[0,50]:='Stimmungskanone';
  stringgrid2.cells[0,51]:='Tollpatsch';
  stringgrid2.cells[0,52]:='Body';
  stringgrid2.cells[0,53]:='Schwiegertraum';
  stringgrid2.cells[0,54]:='Unauffälligste/r';
  stringgrid2.cells[0,55]:='Unselbsständigste/r';
  stringgrid2.cells[0,56]:='Verkehrsrowdy';
  stringgrid2.cells[0,57]:='Verplanteste/r';
  stringgrid2.cells[0,58]:='Verwöhnteste/r';
  stringgrid2.cells[0,59]:='Weichei';
  stringgrid2.cells[0,60]:='Wichtigtuer';
  stringgrid2.cells[0,61]:='Wichtigtuer/in';
  stringgrid2.cells[0,62]:='Zicke';
  stringgrid2.cells[0,63]:='Zuspätkommer/in';
  stringgrid2.cells[0,64]:='Zuverlässigste/r';
  stringgrid2.cells[1,0]:='Alexander';
  stringgrid2.cells[2,0]:='Anil';
  stringgrid2.cells[3,0]:='Arved';
  stringgrid2.cells[4,0]:='Bennet';
  stringgrid2.cells[5,0]:='Daniel W.';
  stringgrid2.cells[6,0]:='Eike';
  stringgrid2.cells[7,0]:='Felix J.';
  stringgrid2.cells[8,0]:='Felix S.';
  stringgrid2.cells[9,0]:='Ferdinand';
  stringgrid2.cells[10,0]:='Florian';
  stringgrid2.cells[11,0]:='Ha';
  stringgrid2.cells[12,0]:='Jan';
  stringgrid2.cells[13,0]:='Jannik F.';
  stringgrid2.cells[14,0]:='Jaseper';
  stringgrid2.cells[15,0]:='Jendrik';
  stringgrid2.cells[16,0]:='Jonas';
  stringgrid2.cells[17,0]:='Konrad';
  stringgrid2.cells[18,0]:='Leewe';
  stringgrid2.cells[19,0]:='Leif';
  stringgrid2.cells[20,0]:='Lorenz';
  stringgrid2.cells[21,0]:='Max K.';
  stringgrid2.cells[22,0]:='Max S.';
  stringgrid2.cells[23,0]:='Michel';
  stringgrid2.cells[24,0]:='Nico';
  stringgrid2.cells[25,0]:='Niklas F.';
  stringgrid2.cells[26,0]:='Niklas H.';
  stringgrid2.cells[27,0]:='Phil';
  stringgrid2.cells[28,0]:='Philip R.';
  stringgrid2.cells[29,0]:='Philip S.';
  stringgrid2.cells[30,0]:='Sergej';
  stringgrid2.cells[31,0]:='Simon';
  stringgrid2.cells[32,0]:='Sören';
  stringgrid2.cells[33,0]:='Steffen';
  stringgrid2.cells[34,0]:='Stephan';
  stringgrid2.cells[35,0]:='Till';
  stringgrid2.cells[36,0]:='Tilmann';
  stringgrid2.cells[37,0]:='Torben';
  stringgrid2.cells[38,0]:='Yannik M.';
  stringgrid2.cells[39,0]:='Yannick Z.';
end;

procedure TForm1.StringGrid1Click(Sender: TObject);
var
  xzelle, yzelle :integer;
begin
  xzelle:=StringGrid1.Col;
  yzelle:=StringGrid1.Row;
  stringgrid1.cells[xzelle,yzelle]:=inttostr(strtoint(stringgrid1.cells[xzelle,yzelle])+1);
end;

procedure TForm1.StringGrid2Click(Sender: TObject);
var
  xzelle, yzelle :integer;
begin
  xzelle:=StringGrid2.Col;
  yzelle:=StringGrid2.Row;
  stringgrid2.cells[xzelle,yzelle]:=inttostr(strtoint(stringgrid2.cells[xzelle,yzelle])+1);
end;

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  xzelle, yzelle :integer;
begin
  if Shift = [ssRight] then // nur rechte maustaste
  begin
    xzelle:=StringGrid1.Col;
    yzelle:=StringGrid1.Row;
    stringgrid1.cells[xzelle,yzelle]:=inttostr(strtoint(stringgrid1.cells[xzelle,yzelle])-1);
  end; // if Shift in [ssRight]
end;

procedure TForm1.StringGrid2MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  xzelle, yzelle :integer;
begin
  if Shift = [ssRight] then // nur rechte maustaste
  begin
    xzelle:=StringGrid2.Col;
    yzelle:=StringGrid2.Row;
    stringgrid2.cells[xzelle,yzelle]:=inttostr(strtoint(stringgrid2.cells[xzelle,yzelle])-1);
  end; // if Shift in [ssRight]
end;

Procedure Mischsortieren1 (links,rechts: Integer);
var Endelinks, Anfangrechts:Integer;


  Procedure Mischen1(I, J: integer);
  var
    Z, K: integer;
  begin
    if I < J then
    begin
      Mischvergleich:=Mischvergleich+1;
      if Liste[I] <= Liste[J] then
      begin
        Mischvergleich:=Mischvergleich+1;
        Mischen1(I + 1, J)
      end
      else
      begin
        Z := Liste[J];
        For K := J - 1 downto I do
        begin
          Liste[K + 1] := Liste[K];
          mischtausch:=mischtausch+1;

        end;
        Liste[I] := Z;
        mischtausch:=mischtausch+1;
        if J < rechts then
          begin
          Mischvergleich:=Mischvergleich+1;
          Mischen1(I + 1, J + 1);
          end;
      end;
    end;
  end;

begin
  Endelinks:=trunc((links+rechts)/2);
  Anfangrechts:=Endelinks+1;
  if links<Endelinks then
  begin
    Mischvergleich:=Mischvergleich+1;
    Mischsortieren1(links,Endelinks);
  end;
  if Anfangrechts<rechts then
  begin
    Mischvergleich:=Mischvergleich+1;
    Mischsortieren1(Anfangrechts,rechts);
  end;
  Mischen1(links,Anfangrechts);
end;

  procedure quicksort(erstes, letztes: integer);
    {Sortieren mittels Quicksort}
    var linker_merker, rechter_merker : integer;
    procedure zerlege (var links, rechts: integer);
      var pivot: integer;
      procedure tausche (var x, y: integer);
        var hilf: integer;
        begin
          hilf := x; x := y; y := hilf;
          vertausche := vertausche + 1;
        end; {of vertausche}
      begin {zerlege}
        pivot := ListeQuick[(links + rechts) DIV 2];
        repeat
          while ListeQuick[links] < pivot do begin
            links := links + 1;
            vergleiche := vergleiche + 1;
          end;
          while ListeQuick[rechts] > pivot do begin
            rechts := rechts - 1;
            vergleiche := vergleiche + 1;
          end;
          if links <= rechts then begin
            tausche (ListeQuick[links], ListeQuick[rechts]);
            links := links + 1; rechts := rechts - 1;
            vergleiche := vergleiche + 1;
          end;
        until links > rechts;
      end;{of zerlege}
    begin {quicksort}
      linker_merker := erstes; rechter_merker := letztes;
      zerlege (linker_merker, rechter_merker);
      if erstes < rechter_merker then
        quicksort (erstes, rechter_merker); {Rekursiver Selbstaufruf!}
      if linker_merker < letztes then
        quicksort (linker_merker, letztes); {Rekursiver Selbstaufruf!}
    end; {of quicksort}

procedure TForm1.Button1Click(Sender: TObject);
var q: integer;

begin
  For q:= 1 to 35 do
  begin
    For l:= 1 to 64 do
      begin
        Liste[l]:=strtoint(stringgrid1.cells[q+1,l]);
      end;
    Mischsortieren1(1,64);
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var q: integer;

begin
  For q:= 1 to 35 do
  begin
    For l:= 1 to 64 do
      begin
        Liste[l]:=strtoint(stringgrid2.cells[q+1,l]);
      end;
    Mischsortieren1(1,64);
  end;
end;

end.
Danke für die Antworten!
  Mit Zitat antworten Zitat