![]() |
Re: 1+1=0 definieren?
denke, du solltest erst mal gucken, dass deine hilfe wieder geht... hier 'n
![]() zur apptype console ... guckste hier:
Delphi-Quellcode:
das :3 in der write anweisung heisst nur, dass die ausgabe 3 zeichen lang sein soll ;-)
program Project1;
{$APPTYPE CONSOLE} uses SysUtils; |
Re: 1+1=0 definieren?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
Delphi-Quellcode:
function AddVektor(const fromVektor, toVektor: tVektor; Skalar: integer): tVektor;
var i: integer; begin setlength(result, high(toVektor)+1); for i := low(fromVektor) to high(fromVektor) do result[i] := fromVektor[i]*Skalar + toVektor[i]; end; Zitat:
Zitat:
Zitat:
<HTH> hier noch 'n beispiel, zum eleminieren des ersten elements der zweiten zeile |
Re: 1+1=0 definieren?
Liste der Anhänge anzeigen (Anzahl: 1)
Hier noch 'n kleines Beispiel, bei dem statt zwei einzelne Vektoren in einer Matrix M integriert sind.
Delphi-Quellcode:
PS: der Code läuft mit der Form aus dem vorherigen Post
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin; type TVektor = array of Integer; TMatrix = array of TVektor; type TForm1 = class(TForm) sV1: TEdit; SV2: TEdit; EV2: TEdit; Ev1: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Button1: TButton; GroupBox1: TGroupBox; GroupBox2: TGroupBox; se: TSpinEdit; Label5: TLabel; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } m: tMatrix; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure VOut(v: tVektor; e: tEdit); var i: integer; begin e.Text := '{'; for i := 0 to high(v) do begin e.text := e.text + inttostr(v[i]); if i < high(v) then e.text := e.text + '; '; end; e.Text := e.text + '}'; end; function AddVektor(const fromVektor, toVektor: tVektor; Skalar: integer): tVektor; var i: integer; begin setlength(result, high(toVektor)+1); for i := low(fromVektor) to high(fromVektor) do result[i] := fromVektor[i]*Skalar + toVektor[i]; end; procedure TForm1.Button1Click(Sender: TObject); begin VOut(M[0], EV1); VOut(AddVektor(M[0], M[1], se.Value), EV2); end; procedure TForm1.FormCreate(Sender: TObject); begin //2 Zeilen mit 3 Spalten setlength(M, 2, 3); M[0, 0] := 1; M[1, 0] := 2; M[0, 1] := 2; M[1, 1] := -1; M[0, 2] := 1; M[1, 2] := 1; VOut(M[0], sV1); VOut(M[1], sV2); end; end. //Edit: anbei noch 'n beispiel mit 'ner 3x3 matrix und ausgabe in ein memo. |
Re: 1+1=0 definieren?
Liste der Anhänge anzeigen (Anzahl: 1)
Häng mal 'ne lösungsroutine hinten an...
Delphi-Quellcode:
vorausgesetzt wird hierbei, dass die zeile 0 keinen "0" wert aufweist, da ansonsten eine exeption ausgelöst würde. beispiel im anhang.
function AddVektor(const fromVektor, toVektor: tVektor; Skalar: double): tVektor;
var i: integer; begin setlength(result, high(toVektor)+1); for i := low(fromVektor) to high(fromVektor) do result[i] := trunc(fromVektor[i]*Skalar) + toVektor[i]; end; procedure TForm1.autosolveClick(Sender: TObject); var Zeile1,Zeile2: integer; begin for Zeile1 := 0 to high(m)-1 do begin for Zeile2 := Zeile1+1 to high(m) do M[Zeile2] := AddVektor(M[Zeile1], M[Zeile2], M[Zeile2, Zeile1] / M[Zeile1, Zeile1] * -1); MatrixOut(m, memo); end; end; |
Re: 1+1=0 definieren?
Zunächst vielen vielen Dank für die Mühe, grenzgaenger!
Wo binde ich denn program Project1; ein? Vor der unit funktioniert auch nicht.. Also zu dem geposteten zweiten Beispiel erst. Ausgabe in eine Textdatei wäre glaub ich super! Tut mir leid, wenn ich nochmal nachfrage - aber wofür stehen die Vektoren genau? Ist das sowas wie A * x = b und alles drei sind dann Vektoren? A die Koeffizienten, x die Unbekannten und b das Ergebnis der Gleichungen? Also mit diesen zwei Vektoren ist V1 dann der Koeffizientenvektor und V2..? Sorry, versteh das Ganze grad nicht so.. Also die Gleichungen ergeben sich aus Schleifen, so wie
Delphi-Quellcode:
Direkt auf Delphi übertragen kann man das fürchte ich aber nicht, oder? Demnach sind das dann auch sehr viele Gleichungen..
set Z := { 1 to 9 };
set A := Z*Z; var x[A*Z] binary; subto jedesFeldEineZahl: forall <i,j> in A do sum <k> in Z do x[i,j,k] == 1; subto quadrate1: forall <k> in Z do sum <i,j> in {1,2,3}*{1,2,3} do x[i,j,k] == 1; ... Was ist denn ein flatfile? Bei dem 3. Beispiel erhalte ich wieder Fehler..sEdit kennt mein Delphi nicht, sowas wie "Class TsSpinEdit" findet er auch nicht :oops: Zitat:
Bei beispiel 4 leider ein Error,Property Memo.ExplicitWidth does not exist? Also die beiden Scrollfelder unter Zeile 1 und Zeile 2 fehlen bei mir |
Re: 1+1=0 definieren?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
im obigen codeabschnitt ist die initialisierung ... da dies eine matrix ist (mit 2 coordinaten) müssen beide versorgt werden... die erste ziffer M[Zeile, Spalte] wird mit einem entsprechenden wert versorgt. Diese initialiserung müsste bei dir wohl via flatfile erfolgen :-) . flatfile = einfache textdatei ohne formatierungsinformationen. Zitat:
im übigen codesegment hast du eine matrix im folgenden aufbau 1; 2; 1 2; -1; 1 diese kann man entweder als zwei zeilenvektoren oder drei spaltenvektoren angeben. Über die spalten-/zeilennummer werden diese dann innerhalb einer matrix addressiert. Zitat:
[quote="Ari"]Also die Gleichungen ergeben sich aus Schleifen, so wie
Delphi-Quellcode:
Direkt auf Delphi übertragen kann man das fürchte ich aber nicht, oder? Demnach sind das dann auch sehr viele Gleichungen../quote]
set Z := { 1 to 9 };
set A := Z*Z; var x[A*Z] binary; subto jedesFeldEineZahl: forall <i,j> in A do sum <k> in Z do x[i,j,k] == 1; subto quadrate1: forall <k> in Z do sum <i,j> in {1,2,3}*{1,2,3} do x[i,j,k] == 1; ... warum sollte das nicht gehen? nur müsste man wissen was hier alles gemeint ist... mir sagen die kontrollkonstrukte nix... aber den algo. kannst sicher in pascal abbilden. der vater hat zwar vergessen matrix operationen mit zu integrieren (wie in fortran) aber die kann man sich ja leicht selber bauen ... :-) . beispiele im code und in der libary, wo ich früher schon dran hängte. noch einen schönen abend und noch viel erfolg. GG |
Re: 1+1=0 definieren?
Super, für ein kleines Beispiel mit 8 Unbekannten funktioniert das schonmal :) Tausend Dank!!
|
Re: 1+1=0 definieren?
Zitat:
wie gesagt, musst erst mal schaun wie du die daten reinbekommst... noch viel erfolg. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz