Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi problem ermittlung Lösung in lernprogramm (https://www.delphipraxis.net/72110-problem-ermittlung-loesung-lernprogramm.html)

pagan1900 25. Jun 2006 21:46


problem ermittlung Lösung in lernprogramm
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi ich schreibe an einem lernprogramm für den dijkstra algorithmus und habe nun folgendes problem:

Ich habe das programm so gestaltet, das das programm, sobalt der benutzer den startknoten (wovon der dijkstra/ die kürzesten wege berechnen soll)eingegeben hat, die Kürzestenwege zu allen anderen knoten berechnet werden. Diese lösungen hab ich , damit ich eine vergleichsmöglichkeit habe in ein 2 dimensionales array gespeichert,
also 1. lösungsschritt alge, in erste spalte des arrays usw.
am beispiel läst sich mein problem vielleicht besser erklären siehe bild imanhang.
Also der algoritmus hat die volgende lösungsmatrix erstellt:
inf:=00 bedeutet unendlich, unterstrich(_) bitte ignorierren, hab sie nur gesetzt,damit
die tabelle so bleibt wie sie sein soll!

1|_2|_3|_4|_5|_6|
-----------------
00|0|00|_1|00|00|
_2|0|00|_1|00|00|
_2|0|00|_1|10|00|
_2|0|00|_1|_7|00|
_2|0|00|_1|_7|14|
_2|0|_3|_1|_7|14|
_2|0|_3|_1|_4|11|

so sieht die tabelle bzw das zwei dimensionale array aus, nachdem der algorithmus schritt für schritt den dijkstra durchlaufen ist!
nun zum eigentlichen problem-> dem Benutzer
Nun soll der benutzer seine lösung über einen stringgrid eingeben (und zwar schrittweise)
Nun und da schliesse ich mich nicht aus ich würde die schritte 1-3 zu einer eingabe zusammenfassen:
1|_2|_3|_4|_5|_6|
-----------------
_2|0|00|_1|10|00|< benutzer gibt diese werte über ein stringgrid ein

und damit sozusagen gleich zu schritt vier übergehen (das währe ja eigentlich auch in ordnung!) nur wie stelle ich dann den vergleich an,
denn wenn ich im moment das abprüfe sagt er immer "fehler", da er diese eingabe mit schritt 1 vergleicht ?
ich müste sagen(pseudocodeähnlich) n=anzahl der knoten)

Für i:=1 bis n führe aus
für j:=1 bis n führe aus
Wenn Benutzereingabe(komplettes eingabe stringgrid)[j]=irgendeinerstelle
(Losungsmatrix[i,j] dann eingabe in odnung, wenn nicht dann fehlermeldung

in anderen worten kommt die benutzer eingabe in der lösungsmatrix vor ist alles ok,
(weil ich davon ausgehen kann das der Dijkstra immer nur eine lösung hat!)
dann label grün, wenn nicht ein galgenmändchen strich hinzu un label rot!

oh nochwas weiss jemand von euch, wie ich bei einem stringgrid die eingabe auf z.B maximallänge 1 begrenze (wie es bei einem memo mögöich ist?

bitte helft mir wenn ihr könnt grosses danke!
wenns geht mit verwendbarem code

marabu 26. Jun 2006 05:57

Re: problem ermittlung Lösung in lernprogramm
 
Guten Morgen,

Zitat:

Zitat von pagan1900
weiss jemand von euch, wie ich bei einem stringgrid die eingabe auf z.B maximallänge 1 begrenze

damit sollte es gehen:

Delphi-Quellcode:
type
  TStringGridCracker = class(TStringGrid);

procedure TDemoForm.StringGridGetEditText(Sender: TObject; ACol,
  ARow: Integer; var Value: String);
begin
  SendMessage(TStringGridCracker(StringGrid).InplaceEditor.Handle,
    EM_SETLIMITTEXT, 1, 0);
end;
Grüße vom marabu

pagan1900 1. Jul 2006 07:57

Re: problem ermittlung Lösung in lernprogramm
 
Problem hab 2 arrays,
die erste ist ein matrix array (dieses array beinhaltet die komplette lösungschritte vom algorithmus dijkstra)
das 2. array ist ein eindimensionales array, da der benutzer immer nur
einen schritt per button druck machen kann und da ich diesen werte nach dem vergleich nicht mehr brauche, kann er das array einfach wieder überschreiben.

ich muss nun "nur" noch feststellen kommt die gesamte zeile (nicht nur einzelne werte) im ersten array vor!
wenn ja ein smiley wenn nein ein fehlerpunkt.

wie kann ich das machen, bin am verzweifeln!
(ich habs auch schon versucht aus lauter verzweiflung die daten in ein stringgridzuschmeissen, dort hab ich erstmal die nullwerte wegbekommen, aber auch hier kann ich irgendwie nicht in dem fall stringgrids miteinander vergleichen)

bitte wenn möglich gleich einen code, da ich diese woche dienstag das lernprogramm abgeben muss!

das zweite ist das ich , da die matrix eine n zu n menge ist und ich
nicht immer alle zeilen brauche werden dort "leerwerte" vom programm selber (ohne mein zutun) eingetragen ,das problem die koennen jeden kram beinhalten, selbst wenn der benutzer den größten blödsinn in seine eingabenfelder reinschreibt ist dadurch alles in ordnung für das programm

ich muss dort bevor dieses anfängt stoppen, das problem n ist im zahlenbereich 1..8 und somit muss die anweisung allgemein sein!

bitte helft mir ! grosses danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 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