• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Solverproblem

MKW

Geocacher
Folgendes kleines Solver-"Programm":
Code:
A=4
"N51°10.3"A (A+A)" E006°17.1" (A-2)(A+2)
führt zu dieser Fehlermeldung:
Code:
Fehler in Zeile:2  Spalte:11
Funktionsname nicht eindeutig:a

Zum Testen habe ich A durch B ersetzt und erhalte:
Code:
B=4
"N51°10.3"B (B+B)" E006°17.1" (B-2)(B+2)
Code:
Fehler in Zeile:2  Spalte:17
Funktion hat falsche Anzahl von Argumenten
:???:

CacheWolf version: 1.1.2030 Jawa

Nachtrag: Es liegt am "(A+A)". Der Parser versucht möglichst früh zu erkennen, welche Funktion gemeint ist. Besser wäre es, wenn er Funktionen nur an ihrem eindeutigen Namen erkenne würde, oder?
 

t31

Geowizard
Code:
B=4
"N51°10.3"(B)(B+B)" E006°17.1" (B-2)(B+2)

oder

Code:
B=4
"N51°10.3"B""(B+B)" E006°17.1" (B-2)(B+2)

Das Problem liegt daran, das es als eine Funktion f(x) erkannt wird, die es nicht gibt. Ganz heikel, weil ohne Fehlermeldung, wird es bei q (a+b)
 

MiK

Geoguru
Am besten verzichtet man wohl außer zum Funktionsaufruf völlig auf runde Klammern.
 

greiol

Geoguru
MiK schrieb:
Am besten verzichtet man wohl außer zum Funktionsaufruf völlig auf runde Klammern.
geht aber leider nicht immer.
A=1
B=2
C=3
"N 10 10."ABC geht ja nicht, also
"N 10 10."(A)(B)(C) oder geht es auch anders?
"N 10 10."A""B""C könnte auch gehen, oder?
 

MiK

Geoguru
"N 10 10."A B C sollte gehen (mit Leerzeichen)

Wenn man Klammern für die Rechnung bruacht kann man z.B. auch [ ] benutzen.
 

d0wnl0rd

Geocacher
MiK schrieb:
"N 10 10."A B C sollte gehen (mit Leerzeichen)

Wenn man Klammern für die Rechnung bruacht kann man z.B. auch [ ] benutzen.

Kann man zumindest bei mir (cw java version nb 1.1.2054) nicht so einfach - der Editor verschluckt schlicht und einfach das
Code:
AltGr + 8 = [
(Bug?)
Über die Zwischenablage eingefügt geht das dann aber...

Ich bin Anfangs auch oft über das
Code:
A (B+1)
Problem gestolpert, meine Lösung ist nun, wann ich immer Klammerausdrücke habe, jeden Term in Klammern zu setzen.
 

Engywuck

Geowizard
Früher war es ja so: Wenn eine Variable (z.B. q) definiert war, so wurde diese verwendet, auch in Fällen, wo sie als Funktion interpretierbar gewesen wäre. Das hat dann Probleme gemacht, wenn man tatsächlich mal die Funktion q verwenden wollte und q definiert war.
Das hat skg dann mal ausgebaut (http://www.geoclub.de/viewtopic.php?f=40&t=30046). Jetzt nur mit der Folge, dass, wenn runde Klammern folgen, ein Buchstabe immer erst mal als Funktion interpretiert wird, wenn es eine gibt, die mit diesem Buchstaben anfängt. Das ist natürlich auch nicht so schön...
Eine Lösung wäre vielleicht folgendes Verhalten: Ein Buchstabe wird dann als Variable interpretiert, wenn er
- als Funktionsbezeichner nicht eindeutig wäre
ODER
- die Argumente nicht zur Funktion passen
UND
- die Variable definiert ist
(Klammern muss man sich hier um den Oder-Ausdruck vorstellen)
In allen anderen Fällen wäre die Interpretation als Funktion möglich, incl. Ausgabe entsprechender Fehlermeldungen.

Einbauen könnte ich das aber nicht ;-)

Gruß,
E.
 

pfeffer

Geowizard
ich würde für eine klare Syntax plädieren, also: [] oder {} oder () oder % oder $ vor oder hinter dem Funktionsnamen. Auf jeden Fall was eindeutiges.

Gruß,
Pfeffer.
 

Robin888

Geomaster
Komisch. Ich hatte das Problem bisher meistens damit beheben können, daß ich die betreffende Variable in Klammern setze. Also tatsächlich "53 23."(A)(B)(C)

Robin(888)
 
Oben