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:
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;
Dann bestimme ich für die Benutzerlösung der Kürzesten wege (dijkstra)
Delphi-Quellcode:
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.
und nun vergleiche ich den KWdist der Userlösung und den KWdist die vom programm errechnet wurden
miteinander
Delphi-Quellcode:
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 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!
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 !