AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi hab ein problem mit array vergleichen Dijkstra
Thema durchsuchen
Ansicht
Themen-Optionen

hab ein problem mit array vergleichen Dijkstra

Ein Thema von pagan1900 · begonnen am 3. Jun 2006 · letzter Beitrag vom 3. Jun 2006
Antwort Antwort
pagan1900

Registriert seit: 27. Mär 2006
25 Beiträge
 
#1

hab ein problem mit array vergleichen Dijkstra

  Alt 3. Jun 2006, 17:03
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 !
  Mit Zitat antworten Zitat
Hawkeye219

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

Re: hab ein problem mit array vergleichen Dijkstra

  Alt 3. Jun 2006, 17:11
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
  Mit Zitat antworten Zitat
pagan1900

Registriert seit: 27. Mär 2006
25 Beiträge
 
#3

Re: hab ein problem mit array vergleichen Dijkstra

  Alt 3. Jun 2006, 17:17
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?
  Mit Zitat antworten Zitat
Antwort Antwort


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 09:35 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