Hi @ all,
ich habe folgendes problem: in meinem informatik-wahlfach müssen wir folgende aufgabe bearbeiten:
Ein goldgräber hat nach streifzügen durch das weite, unerforschte land einige vielversprechende schürfplätze entdeckt. diese plätze hat er auf einer karte vermerkt. bevor er jedoch mit seinen grabungen beginnen kann, muss er das von ihm beanspruchte gebiet, seinen claim, abstecken. dazu will er einen zaun errichten, der den claim möglichst kurz umschließt.
schreibe ein programm, das nach eingabe beliebig vieler schürfplätze die streckenbeschreibung und die länge des kürzesten claim-zaunes ermittelt und ausgibt. jeder schürfplatz wird durch ein paar (x,y) ganzzahliger koordinaten angegeben. zur vereinfachung kannst du davon ausgehen, dass ein schürfplatz keine ausdehnung besitzt und auch dann schon zum claim gehört, wenn er genau unter dem zaun zu liegen kommt.
ich habe mir folgendes überlegt: -man wählt einen punkt mit xmax als startpunkt
-von dort aus muss man zum nächsten, am äußersten liegenden punkt, dieser hätte zum
vorhergehenden punkt die größte steigung der benachbarten punkte usw.
-das macht man solange, bis man wieder am startpunkt angelangt ist
-nun müsste man noch die punkte verbinden und die länge des zaunes berechnen
leider hab ich nicht viel ahnung vom programmieren und das buch, das ich mir bestellt hab, hat lieferschwierigkeiten.
von daher wäre ich für hilfe sehr dankbar.
folgendes hab ich schon programmiert:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| unit uZaun;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) LabeledEdit1: TLabeledEdit; LabeledEdit2: TLabeledEdit; Button1: TButton; Image1: TImage; Button2: TButton; procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject);
private XWerte : array of integer; YWerte : array of integer; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin setlength(xwerte, length(xwerte)+1); setlength(ywerte, length(ywerte)+1); xwerte[length(xwerte)-1] := strtoint(labelededit1.Text); ywerte[length(ywerte)-1] := strtoint(labelededit2.Text); end;
procedure TForm1.Button2Click(Sender: TObject); var i : integer; begin image1.Canvas.Pen.Color:= clblack; for I := 0 to length(xwerte) - 1 do
image1.Canvas.Ellipse(Xwerte[i]-5,Ywerte[i]-5,Xwerte[i]+5,Ywerte[i]+5); end;
procedure TForm1.FormCreate(Sender: TObject); begin setlength(xwerte,1); setlength(ywerte,1); end;
end. |
Moderiert von
AXMD: Delphi-Tags hinzugefügt