Hallo.
Ich schreibe an einem Prog, das die Eingaben des Users bewertet. Man gibt eine Musterlösung vor und vergleicht diese mit dem, was der User eingegeben hat.
Beispiel:
Musterlösung: Ich glaube, dass es heute regnen wird.
Userlösung: Ich glaube, das es heute regnen wird.
Bei der Bewertung werfe ich alle Interpunktionszeichen (Komma, Punkt, Fragezeichen usw.) raus und vergleiche dann die Worte. Meine Routine würde nun "das" herausgeben, da dies das erste falsche Wort in der Userlösung ist.
Nun soll seine Lösung eingefärbt werden:
Ich glaube, das es heute regnen wird.
(Wie das bei einem Eingabefeld geht, weiß ich auch noch nicht, wäre also für Vorschläge offen. :wink: )
Mein eigentliches Problem ist aber das Erkennen des falschen Wortes in der Userlösung. Bei dem obigen Beispiel ist das kein Problem, aber was ist bspw. mit
Musterlösung: Es ist möglich, dass eine lange Strecke keine Ebene ist.
Userlösung: Es ist möglich, dass keine lange Strecke keine Ebene ist.
Ab dem ersten "keine" ist seine Lösung falsch, aber wie soll ich das erkennen, wenn doch 2x "keine" in der Lösung vorkommt und durch das Entfernen der Interpunktionszeichen die Indizes nicht mehr stimmen?!
Die gleiche Problematik ergibt sich, wenn der User sich bei Worten verschrieben hat, die von einem Interpunktionszeichen umgeben sind: "Es kann seein, dass..."
Die Routine findet "seein" als falsches Wort, aber wie finde ich "seein" in der User-Lösung? Ich kann ja nicht nach "seein" suchen, denn es könnte bei kurzen Worten (z.B. "ein") sein, dass sie in einem anderen Wort ("ein" ist in "fein", "mein", "sein",...) stecken. Also muss ich nach " seein " suchen, um sicherzustellen, dass ich nach einem eigenständigen Wort suche. Diese Suche würde aber fehlschlagen, da " seein " nicht dasselbe wie " seein," ist. Und grundsätzlich mit allen Interpunktionszeichen ("seein," ",seein" ".seein" "seein." usw.) zu suchen, halte ich ebenfalls für nicht besonders effektiv, denn dabei könnten ebenfalls neue Sonderfälle entstehen.
Ich hoffe, ich habe verständlich erklären können, worum es geht. Würde mich über Ideen und Beispielcode (darf auch für PHP sein) freuen.
cya
Ich schreibe an einem Prog, das die Eingaben des Users bewertet. Man gibt eine Musterlösung vor und vergleicht diese mit dem, was der User eingegeben hat.
Beispiel:
Musterlösung: Ich glaube, dass es heute regnen wird.
Userlösung: Ich glaube, das es heute regnen wird.
Bei der Bewertung werfe ich alle Interpunktionszeichen (Komma, Punkt, Fragezeichen usw.) raus und vergleiche dann die Worte. Meine Routine würde nun "das" herausgeben, da dies das erste falsche Wort in der Userlösung ist.
Nun soll seine Lösung eingefärbt werden:
Ich glaube, das es heute regnen wird.
(Wie das bei einem Eingabefeld geht, weiß ich auch noch nicht, wäre also für Vorschläge offen. :wink: )
Mein eigentliches Problem ist aber das Erkennen des falschen Wortes in der Userlösung. Bei dem obigen Beispiel ist das kein Problem, aber was ist bspw. mit
Musterlösung: Es ist möglich, dass eine lange Strecke keine Ebene ist.
Userlösung: Es ist möglich, dass keine lange Strecke keine Ebene ist.
Ab dem ersten "keine" ist seine Lösung falsch, aber wie soll ich das erkennen, wenn doch 2x "keine" in der Lösung vorkommt und durch das Entfernen der Interpunktionszeichen die Indizes nicht mehr stimmen?!
Die gleiche Problematik ergibt sich, wenn der User sich bei Worten verschrieben hat, die von einem Interpunktionszeichen umgeben sind: "Es kann seein, dass..."
Die Routine findet "seein" als falsches Wort, aber wie finde ich "seein" in der User-Lösung? Ich kann ja nicht nach "seein" suchen, denn es könnte bei kurzen Worten (z.B. "ein") sein, dass sie in einem anderen Wort ("ein" ist in "fein", "mein", "sein",...) stecken. Also muss ich nach " seein " suchen, um sicherzustellen, dass ich nach einem eigenständigen Wort suche. Diese Suche würde aber fehlschlagen, da " seein " nicht dasselbe wie " seein," ist. Und grundsätzlich mit allen Interpunktionszeichen ("seein," ",seein" ".seein" "seein." usw.) zu suchen, halte ich ebenfalls für nicht besonders effektiv, denn dabei könnten ebenfalls neue Sonderfälle entstehen.
Ich hoffe, ich habe verständlich erklären können, worum es geht. Würde mich über Ideen und Beispielcode (darf auch für PHP sein) freuen.
cya