AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Calss operator liefert das falsche Ergebnis

Calss operator liefert das falsche Ergebnis

Ein Thema von Timb0 · begonnen am 12. Dez 2008 · letzter Beitrag vom 12. Dez 2008
Antwort Antwort
Timb0

Registriert seit: 2. Apr 2008
19 Beiträge
 
#1

Calss operator liefert das falsche Ergebnis

  Alt 12. Dez 2008, 07:35
Hallo alle zusammen,

ich ahbe mir den folgenden Typ definiert:
Delphi-Quellcode:
TVector = record
  first : PElement;

  class Operator Multiply(c:Real;u:TVector) : TVector;Overload;
  class Operator Multiply(u:TVector;c:Real) : TVector;Overload;
  class Operator Multiply(v,u:TVector): Double;
  class Operator Add(v,u:TVector) : TVector; Overload;
end;
alle Class Operatoren funktionieren ausser der 3. mit
class Operator Multiply(v,u:TVector): Double; dieser Rechnet das richtige ergebnis aus und Übergibt dann einfach das flasche. Ich verstehe einfach nicht warum hier mal kurz die funktion
Delphi-Quellcode:
Class Operator TVector.Multiply(v,u:TVector): Double;
var s,r:PElement; // Liste aus real werten die eine Eigenschaft x:real , next :Pelement hat.
  summe : Real;
begin
s:= v.first;
r:= u.first;

Result := 0;

if not Dimension(v) = Dimension(u) then begin Result := -1; Exit; end;

while s.next <> nil do
begin
  Result := Result + s^.x*r^.x;
  s := s^.next;
  r := r^.next;
end;

  Result := Result + s^.x*r^.x;
end;
Es handelt sich dabei um ein Skalarprodukt von Vektoren. Der Witz ist einfach, das der Result genau das Richtige ergebniss liefer, wenn man ihn innerhalb der Procedure abfrag (also nach der letzten Zeile eine MSgBox). Der Aufruf sieht wie folgt aus:
  S := Vec*Vec2; Gruß und schonmal danke fürs lesen, Timb00
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Calss operator liefert das falsche Ergebnis

  Alt 12. Dez 2008, 08:06
Und was bedeutet falsch?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Calss operator liefert das falsche Ergebnis

  Alt 12. Dez 2008, 09:22
Hai Timb0,

bitte nicht falsch verstehen: Aber man kann deinen Text sicher besser lesen wenn Du zumindest die groben Schreibfehler beseitigst.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Calss operator liefert das falsche Ergebnis

  Alt 12. Dez 2008, 09:55
Vielleicht musst Du die Multiplikation ja explizit klammern?

Viele Grüße
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: Calss operator liefert das falsche Ergebnis

  Alt 12. Dez 2008, 12:33
Hallo,

unabhängig von deinem eigentlichen Problem musst du den Plausibilitätstest korrigieren:

Delphi-Quellcode:
//if not Dimension(v) = Dimension(u) then begin Result := -1; Exit; end; // falsch
//if not (Dimension(v) = Dimension(u)) then begin Result := -1; Exit; end; // richtig
if (Dimension(v) <> Dimension(u)) then begin Result := -1; Exit; end; // besser
Gruß Hawkeye
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Calss operator liefert das falsche Ergebnis

  Alt 12. Dez 2008, 13:26
class Operator Multiply(v,u:TVector): Double; Fehlt da nicht ein "overload;"?
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Calss operator liefert das falsche Ergebnis

  Alt 12. Dez 2008, 13:56
Das frage ich mich auch die ganze Zeit, aber wenn mkinzler und sharky das nicht bemängeln muss es korrekt sein

Sherlock
Oliver
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Calss operator liefert das falsche Ergebnis

  Alt 12. Dez 2008, 14:14
So genau habe ich mir das gar nicht angeschaut
Markus Kinzler
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:32 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