![]() |
hab ein problem mit array vergleichen Dijkstra
folgende ausgangslage:
Ein benutzer gibt graphen ein die wie folgt abgespeichert werden //Tknoten=array[1..8]of word; //TPfeil=array[1..64]of word Anfangsknoten,Endknoten,Bewertung //werden also in 3 arrays vom typ Tpfeil gespeichert ------------------------ Der Benutzer gibt nun seine lösung in form von teilpfeilen an UserI,UserJ //werden in zwei arrays vom typ Tpfeil eingespeichert ---- Als nächstes muss ich an die kosten herankommen (die im oberen teil bestimmt wurden) so hab ich es versucht:
Delphi-Quellcode:
Dann bestimme ich für die Benutzerlösung der Kürzesten wege (dijkstra)
procedure TfrmUebung.Button2Click(Sender: TObject);
var i,j:word; locali,localj:word; begin user_m:=user_m+1; i:=strtoint(edit1.Text); j:=strtoint(edit2.Text); for locali:=1 to m do begin if (i=Anf[locali])and(j=Ende[locali]) then begin UserI[locali]:=i; UserJ[locali]:=j; UserC[locali]:=Kosten[locali]; end; end; end;
Delphi-Quellcode:
und nun vergleiche ich den KWdist der Userlösung und den KWdist die vom programm errechnet wurden
procedure TfrmUebung.Button3Click(Sender: TObject);
var locali:integer; Vergleich:Boolean; E,l:word; begin E:=m; l:=1; PQuicksort(UserI,UserJ,UserC,l,E); PnVektor(UserI,n,m,User_PN); Dijkstra_Pfeil(User_pre,User_KW,UserJ,UserC,User_PN,n,Startknoten); Vergleich:=User_AlgoGleich(User_KW,Algo_KW); If (Vergleich=true) then begin panel2.Color:=clgreen end else panel2.Color:=clred; end; end. miteinander
Delphi-Quellcode:
und hier steckt mein problem!! ich weiss das der Algorithmus von dijkstra NUR eine richige lösung zuläst und das wollt e ich mir zu nutze machen, nur irgendwie vergleicht er nicht richtig!
function User_AlgoGleich(User,Algo:TKnoten):Boolean;
var locali,localj:word; ok:boolean; begin ok:=false; for locali:=1 to n do begin for localj:=1 to n do begin if (User_KW[locali])=(Algo_KW[localj]) then begin ok:=true; end else ok := false; end; end; und dann kommt folgendes zu stande: der Algo sagt: |1|2|3 3|2|2|0 wenn aber der user z.B. gleich auf den button drückt (er hat z.B. die pfeile vergessen einzugeben) kommt folgendes herraus: Userlösung |1 |2 |3 3|999|999|0 und er sagt dann dennoch alles im grünen bereich bei meine fragestellung! Sprich bei falscher (eigentlich hier offensichtlich) rot, bei richtiger eingabe grün(was er ich macht, aber eigentlich nciht sollte) hoffe ihr konnt mir helfen bin an dem ding am verzweifeln, so schwehr kann es doch nicht sein zwei arrays zu vergleichen ob deren inhalt gleich ist ! |
Re: hab ein problem mit array vergleichen Dijkstra
Hallo,
vielleicht solltest du die Funktion User_AlgoGleich noch einmal überprüfen. Deine Arrays haben n Elemente, und du benötigst n*n Vergleiche? Außerdem verwendest du die Übergabeparameter innerhalb der Funktion gar nicht... Gruß Hawkeye |
Re: hab ein problem mit array vergleichen Dijkstra
ich kam nur deswegen drauf, da diese arrays ja die inhalte von
kw_dist sind und die laufen hier z.B. von 1->n, da der graph 3 knoten hat und ich muss doch zwei for schleifen laufen lassen umd den erstenwert mit allen werten des zweiten arrays zu vergleichen oder sehe ich das zu kompleziert? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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