![]() |
Re: Variablen Verwendung
Zitat:
@Mb123: Definier dir einen Rekord, welcher dir die drei Werte des Vektors zu einer Einheit zusammenfasst:
Delphi-Quellcode:
Dann hast du die 3 Element beisammen und kannst sie einfacher weitergeben und trotzdem einzelnd ansprechen.
Type
TVektor = Record a, b, c: Integer End; Var aVektor: TVektor; ... Begin aVektor.a := 4; aVektor.b := 1; aVektor.c := -2; ... End. Um dann den Vektor einfacher zu zu weisen, eine kleine Funktion:
Delphi-Quellcode:
Function Vektor(Const a, b, c: Integer): TVektor;
Begin Result.a := a; Result.b := b; Result.c := c; End; |
Re: Variablen Verwendung
danke erstmal an Muetze1 ! (:
Delphi-Quellcode:
So meintest du das doch oder ? ich hab nur noch nich so ganz verstanden wie du das mit der funktion meinst ? kann man dann nachher den kompletten vektor einem anderen vektor zuweisen ?
var
Form1: TForm1; q:integer; Type TVektor = Record a, b, c: Integer End; Var aVektor: TVektor; bVektor: TVektor; cVektor: TVektor; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin aVektor.a := 1; aVektor.b := 0; aVektor.c := 160; bVektor.a := 0; bVektor.b := 1; bVektor.c := 7; while aVektor.a <> 0 do begin q:= bVektor.c DIV aVektor.a; end; end; end. ich hab noch nie so richtig mit records und so gearbeitet, deswegen bin ich da nich so fit ! wenn du mir das nochmal etwas erklären könntest mit der funktion wär das spiitze ! |
Re: Variablen Verwendung
Mit der Funktion gehts so:
Delphi-Quellcode:
Und von mir gibbet gratis eine drauf:
aVektor := Vektor(1, 0, 160);
bVektor := Vektor(0, 1, 7);
Delphi-Quellcode:
Verwendung:
function multiVektor(const v: TVektor; const q: integer):TVektor;
begin Result.a := v.a * q; Result.b := v.b * q; Result.c := v.c * q; end;
Delphi-Quellcode:
cVektor := multiVektor(aVektor, q);
|
Re: Variablen Verwendung
ihr seid spitze man :-D
Delphi-Quellcode:
habs nu so gemacht.. nur wenn ich das laufen lass, kommen keine zahlen sondern die .exe hängt sich auf :/ weiß jemand rat ?
var
Form1: TForm1; q:integer; Type TVektor = Record a, b, c: Integer End; Var aVektor: TVektor; bVektor: TVektor; cVektor: TVektor; .. Function Vektor(Const a, b, c: Integer): TVektor; Begin Result.a := a; Result.b := b; Result.c := c; End; procedure TForm1.Button1Click(Sender: TObject); begin aVektor := Vektor(1,0,160); bVektor := Vektor (0,1,7); while aVektor.a <> 0 do begin q:= bVektor.c DIV aVektor.a; aVektor := Vektor(aVektor.a-(q*bVektor.a),aVektor.b-(q*bVektor.b),aVektor.c-(q*bVektor.c)); bVektor := Vektor(aVektor.a,aVektor.b ,aVektor.c); cVektor := Vektor(aVektor.a,aVektor.b ,aVektor.c); ListBox1.Items.Add(IntToStr(bVektor.b)); end; end; end. |
Re: Variablen Verwendung
Stimmt abziehen war ja auch noch.. Am besten wieder per Funktion...
Delphi-Quellcode:
Sähe dann wohl so aus (hast da bissel was durcheinandergebracht, laut der Aufgabenstellung), ich hab mal die Variablen laut Aufgabe benannt, dann wird das klarer:
function substVektor(const from, vek: TVektor):TVektor;
begin Result.a := from.a - vek.a; Result.b := from.b - vek.b; Result.c := from.c - vek.c; end;
Delphi-Quellcode:
uVek := Vektor(1, 0, 160); vVek := Vektor(0, 1, 7); // statt 160 und 7 dann später die validierten // Werte für a und b while (vVek.c <> 0) do begin q := uVek.c div vVek.c; tVek := substVektor(uVek, multiVektor(vVek, q)); uVek := vVek; // records einfach nur zuweisen reicht! vVek := tVek; end; |
Re: Variablen Verwendung
Delphi-Quellcode:
jetzt hab ichs so stehen und er sagt mir :? :(
Function Vektor(Const a, b, c: Integer): TVektor;
Begin Result.a := a; Result.b := b; Result.c := c; End; function multiVektor(const v: TVektor; const q: integer):TVektor; begin Result.a := v.a * q; Result.b := v.b * q; Result.c := v.c * q; end; function substVektor(const from, vek: TVektor):TVektor; begin Result.a := from.a - vek.a; Result.b := from.b - vek.b; Result.c := from.c - vek.c; end; procedure TForm1.Button1Click(Sender: TObject); begin uVektor := Vektor(1,0,160); vVektor := Vektor(0,1,7); while (vVektor.c <> 0) do begin q := uVektor.c div vVektor.c; tVektor := substVektor(uVektor, multiVektor(vVektor, q)); uVektor := vVektor; vVektor := tVektor; end; end; end. Zitat:
Delphi-Quellcode:
tVektor := substVektor(uVektor, multiVektor(vVektor, q));
uVektor := vVektor; vVektor := tVektor; |
Re: Variablen Verwendung
Hallo,
TVektor ist bereits der Name eines Typs, in deinem Fall ein RECORD. Du solltest keine Variable mit gleichem Namen verwenden. Wie hast du es eigentlich geschafft, die Variable tVektor zu vereinbaren? Gruß Hawkeye |
Re: Variablen Verwendung
Liste der Anhänge anzeigen (Anzahl: 1)
Das ganze sieht jetzt so aus & läuft auch alles soweit :-D Danke nochmal an alle die mir geholfen haben !!
Ich hab auch nochmal ein Bild von dem Programm angehängt, damit man sich mal angucken kann wofür der code letztendlich ist.
Delphi-Quellcode:
unit berechneD;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; phi: TEdit; e: TEdit; d: TEdit; ListBox1: TListBox; ListBox2: TListBox; ListBox3: TListBox; Label4: TLabel; ggT: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; q,a,b:integer; Type TVektor = Record a, b, c: Integer End; Var uVektor: TVektor; vVektor: TVektor; cVektor: TVektor; implementation {$R *.dfm} Function Vektor(Const a, b, c: Integer): TVektor; Begin Result.a := a; Result.b := b; Result.c := c; End; function multiVektor(const v: TVektor; const q: integer):TVektor; begin Result.a := v.a * q; Result.b := v.b * q; Result.c := v.c * q; end; function substVektor(const from, vek: TVektor):TVektor; begin Result.a := from.a - vek.a; Result.b := from.b - vek.b; Result.c := from.c - vek.c; end; procedure TForm1.Button1Click(Sender: TObject); begin a:=StrToInt(phi.text); b:=StrToInt(e.text); uVektor := Vektor(1,0,a); vVektor := Vektor(0,1,b); while (vVektor.c <> 0) do begin q := uVektor.c div vVektor.c; cVektor := substVektor(uVektor, multiVektor(vVektor, q)); uVektor := vVektor; // records einfach nur zuweisen reicht! vVektor := cVektor; ListBox1.Items.Add('u1='+IntToStr(uVektor.a)) ; ListBox1.Items.Add('u2='+IntToStr(uVektor.b)) ; ListBox1.Items.Add('u3='+IntToStr(uVektor.c)) ; ListBox2.Items.Add('v1='+IntToStr(vVektor.a)) ; ListBox2.Items.Add('v1='+IntToStr(vVektor.b)) ; ListBox2.Items.Add('v1='+IntToStr(vVektor.c)) ; ListBox3.Items.Add('t1='+IntToStr(cVektor.a)) ; ListBox3.Items.Add('t1='+IntToStr(cVektor.b)) ; ListBox3.Items.Add('t1='+IntToStr(cVektor.c)) ; end; if (uVektor.b<0) then Begin uVektor.b:=uVektor.b+a; end; d.Text:= IntToStr(uVektor.b) ; ggT.text:=IntToStr(uVektor.a) + '*' + IntToStr(a) + '+' + IntToStr(uVektor.b) + '*' + IntToStr(b); end; end. |
Re: Variablen Verwendung
Evtl. bei den Listbox ausgaben v1, v2, v3 statt v1, v1, v1 ;) selbes bei t
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:50 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