AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Variablen Verwendung

Ein Thema von Mb123 · begonnen am 7. Feb 2007 · letzter Beitrag vom 10. Feb 2007
Antwort Antwort
Seite 2 von 2     12   
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Variablen Verwendung

  Alt 7. Feb 2007, 15:27
Zitat von 3_of_8:
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.
Das gilt für lokale Variablen. Er hat sie als globale Variable deklariert und die werden initialisiert mit einer 0.

@Mb123: Definier dir einen Rekord, welcher dir die drei Werte des Vektors zu einer Einheit zusammenfasst:

Delphi-Quellcode:
Type
  TVektor = Record
    a, b, c: Integer
  End;

Var
  aVektor: TVektor;

...

Begin
  aVektor.a := 4;
  aVektor.b := 1;
  aVektor.c := -2;

  ...
End.
Dann hast du die 3 Element beisammen und kannst sie einfacher weitergeben und trotzdem einzelnd ansprechen.

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;
  Mit Zitat antworten Zitat
Mb123

Registriert seit: 7. Jun 2006
33 Beiträge
 
#12

Re: Variablen Verwendung

  Alt 7. Feb 2007, 15:50
danke erstmal an Muetze1 ! (:

Delphi-Quellcode:
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.
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 ?
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 !
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Variablen Verwendung

  Alt 7. Feb 2007, 16:49
Mit der Funktion gehts so:
Delphi-Quellcode:
aVektor := Vektor(1, 0, 160);
bVektor := Vektor(0, 1, 7);
Und von mir gibbet gratis eine drauf:
Delphi-Quellcode:
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;
Verwendung:cVektor := multiVektor(aVektor, q);
  Mit Zitat antworten Zitat
Mb123

Registriert seit: 7. Jun 2006
33 Beiträge
 
#14

Re: Variablen Verwendung

  Alt 7. Feb 2007, 17:10
ihr seid spitze man
Delphi-Quellcode:
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.
habs nu so gemacht.. nur wenn ich das laufen lass, kommen keine zahlen sondern die .exe hängt sich auf :/ weiß jemand rat ?
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: Variablen Verwendung

  Alt 7. Feb 2007, 17:25
Stimmt abziehen war ja auch noch.. Am besten wieder per Funktion...

Delphi-Quellcode:
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;
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:

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;
  Mit Zitat antworten Zitat
Mb123

Registriert seit: 7. Jun 2006
33 Beiträge
 
#16

Re: Variablen Verwendung

  Alt 7. Feb 2007, 19:42
Delphi-Quellcode:
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.
jetzt hab ichs so stehen und er sagt mir
Zitat:
[Error] berechneD.pas(82): '(' expected but ':=' found
[Error] berechneD.pas(84): '(' expected but ';' found
[Fatal Error] Project2.dpr(5): Could not compile used unit 'berechneD.pas'
der fehler kommt an dieser stelle :
Delphi-Quellcode:
  tVektor := substVektor(uVektor, multiVektor(vVektor, q));
  uVektor := vVektor;
  vVektor := tVektor;
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#17

Re: Variablen Verwendung

  Alt 7. Feb 2007, 19:53
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
  Mit Zitat antworten Zitat
Mb123

Registriert seit: 7. Jun 2006
33 Beiträge
 
#18

Re: Variablen Verwendung

  Alt 9. Feb 2007, 12:26
Das ganze sieht jetzt so aus & läuft auch alles soweit 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.
Miniaturansicht angehängter Grafiken
bed_691.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von cruiser
cruiser

Registriert seit: 23. Dez 2003
Ort: Königsbrück/Sachsen
455 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Variablen Verwendung

  Alt 10. Feb 2007, 03:18
Evtl. bei den Listbox ausgaben v1, v2, v3 statt v1, v1, v1 selbes bei t
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 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