![]() |
Variablen Verwendung
Guten Morgen,
Ich habe vor folgenden Logarithmus zu programmieren: ![]() Nun meine Frage kann ich in Delpi die Variablen wie in Zeile 2 (oder 6) verwenden oder muss ich sie so definiere: var u1,u2,u3: integer; [...] u1:=1; u2:=0; u3:=b; Dann noch die zweite Frage: Gibt es einen Befehl für eine Division ohne Rest ? Danke! |
Re: Variablen Verwendung
Variablen müssen auf jeden Fall deklariert werden.
DIV |
Re: Variablen Verwendung
Delphi-Quellcode:
Ich hab den Code jetzt so geschrieben, allerdings krieg ich als ausgabe nur die startwerte
[...]
var Form1: TForm1; u1,u2,u3,v1,v2,v3,t1,t2,t3,q,a,b:integer; [...] procedure TForm1.Button1Click(Sender: TObject); begin a:=StrToInt(edit1.text); b:=StrToInt(edit2.text); u1:=1 ; u2:=0 ; u2:=a ; v1:=0 ; v2:=1 ; v3:=b ; while v3>0 do begin q:= u3 DIV v3; t1:=u1-q*v1 ; t2:=u2-q*v2 ; t2:=u3-q*v3 ; u1:=v1 ; u2:=v2 ; u3:=v3 ; v1:=t1 ; v2:=t2 ; v3:=t3 ; ListBox1.Items.Add(IntToStr(u1)); ListBox1.Items.Add(IntToStr(u2)); ListBox1.Items.Add(IntToStr(u3)); end; end; end. u1=0 u2=1 u3=b .. Ich denk mein Fehler liegt an dieser Stelle
Delphi-Quellcode:
In der Darstellung oben heißt "!=" doch soviel wie: bis v3=o wird oder ? Ich hab ja jetzt einfach geschrieben v3>0 :S
while v3>0 do
kann mir da jemand weiterhelfen ? danke ! |
Re: Variablen Verwendung
wo setzt du b auf einen wert? sehe das niergends - und ansonsten wird der wahrscheinlich 0 sein ...
|
Re: Variablen Verwendung
ein != entspricht in Delphi einem <>
Außerdem liest du da oben n und e ein, weist aber a und b zu. Das kann nicht gehen. |
Re: Variablen Verwendung
n und e hatte ich in meinem code schon durch a und b ersetzt hier allerdings noch nich gepostet, sooorry .
aber wenn ich <> einsetze wird immer noch 0 , 1 , b ausgegeben :/
Delphi-Quellcode:
var
Form1: TForm1; u1,u2,u3,v1,v2,v3,t1,t2,t3,q,a,b:integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin a:=StrToInt(edit1.text); b:=StrToInt(edit2.text); u1:=1 ; u2:=0 ; u3:=a ; v1:=0 ; v2:=1 ; v3:=b ; while v3 <> 0 do begin q:= u3 DIV v3; t1:=u1-q*v1 ; t2:=u2-q*v2 ; t2:=u3-q*v3 ; u1:=v1 ; u2:=v2 ; u3:=v3 ; v1:=t1 ; v2:=t2 ; v3:=t3 ; ListBox1.Items.Add(IntToStr(u1)); ListBox1.Items.Add(IntToStr(u2)); ListBox1.Items.Add(IntToStr(u3)); end; end; end. so sieht es jetzt aus ! |
Re: Variablen Verwendung
Zitat:
|
Re: Variablen Verwendung
ich hab die variable doch definiert und gebe ihr dann den wert aus den edit boxen ?!
Delphi-Quellcode:
oder wie meinst du das ?
var
Form1: TForm1; u1,u2,u3,v1,v2,v3,t1,t2,t3,q,a,b:integer; .. a:=StrToInt(edit1.text); b:=StrToInt(edit2.text); Zitat:
|
Re: Variablen Verwendung
Zitat:
Das ganze ist relativ einfach: Variablen mit festen Größe, wie zum Beispiel Integer, werden auf den Stack gepackt. Natürlich weiß man da nie, was vorher da drauf war. |
Re: Variablen Verwendung
ähmm ja .. ich weiß zwar nich wie mir das jetzt helfen soll,
denn wenn ich anstatt a u. b feste werte einsetz, passiert genauso wenig. Das ganze sollte ja sowas produzieren wenn es gehen würde: ![]() könntest du mir vielleicht sagen, was ich am code verändern muss damit es funktioniert ? |
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 05:26 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