Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Hilfe! Info-Arbeit Kl. 12 (https://www.delphipraxis.net/59034-hilfe-info-arbeit-kl-12-a.html)

fullyoak 16. Dez 2005 07:41


Hilfe! Info-Arbeit Kl. 12
 
Delphi-Quellcode:
unit UTest2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.Grids, System.ComponentModel, Borland.Vcl.StdCtrls;

type
  feldtyp = array[-4..7] of integer;    {Achtung auf die Indizierung}

  TForm1 = class(TForm)
    Memo1: TMemo;
    StringGrid1: TStringGrid;
    BStart: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BStartClick(Sender: TObject);
    procedure sortierverfahren(var temp:feldtyp;rechts:integer);
    procedure ausgabe(z:integer);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i, zeile : integer;
  a: feldtyp;
implementation
{$R *.nfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  zeile:=0;
  a[1]:=35;a[2]:=38;a[3]:=56;a[4]:=42;a[5]:=26;a[6]:=9;a[7]:=4;
  for i:= 1 to 7 do begin
    stringgrid1.cells[i,zeile]:='a['+inttostr(i)+']';
    stringgrid1.Cells[i,zeile+1]:=inttostr(a[i]);
  end;
  stringgrid1.cells[0,zeile+1]:='Start';
  zeile:=zeile+2;
end;

procedure TForm1.Sortierverfahren(var temp: feldtyp; rechts:integer);
const t=3;
var x,i,j,k,s:integer;
    m : 1..t;       {m kann Werte von 1 bis t annehmen}
    h:feldtyp;
begin
  h[1]:=5;
  h[2]:=3;
  h[3]:=1;
  for m:= 1 to t do begin
    k:=h[m];
    s:= -k;
    for i:=k+1 to rechts do begin
      x:=temp[i];
      j:=i-k;
      if s=0 then s := -k;
      s:=s+1;
      temp[s]:=x;
      while x < temp[j] do begin
        temp[j+k]:=temp[j];
        j:=j-k;
      end;
      temp[j+k]:=x;
    end;
  end;
end;

procedure TForm1.ausgabe(z:integer);
begin
  for i:= 1 to 7 do
    stringgrid1.cells[i,z]:=inttostr(a[i]);
  zeile:=zeile+1;
end;

procedure TForm1.BStartClick(Sender: TObject);
begin
  sortierverfahren(a,7);
  stringgrid1.Cells[0,zeile]:='Ergebnis';
  ausgabe(Zeile);
end;

end.

Wie funktioniert das Sortieren?
Welche Rolle spielen die h[i]?
Warum geht der Index von -4 bis 7?

DANKE!

deusmac 28. Dez 2005 14:28

Re: Hilfe! Info-Arbeit Kl. 12
 
Oh man euer Lehrer will euch quälen oder. Noch komplizierter kann man sowas nicht schreiben, aber vielleicht habt ihr ja schon Vorarbeit geleistet um den Unsinn zu verstehen. Als ich noch zur Schule ging (vor nem halben Jahr :-)) hat unser Infolehrer uns wenigstens Aufgaben gegeben die einigermaßen zu verstehen waren. Bei soner Aufgabe wie da oben würd ich während ner Klausur sterben. Ich werds mir aber nochmal genauer Anschauen und versuchen zu helfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz