Hallo, habe folgendes Problem, dass ich einfach nicht lösen kann:
Ich habe einen String (eine mathematische Funktion) bei der jedes x in (x+0) umgewandelt werden soll. Dazu habe ich folgenden Quelltext geschrieben:
Code:
Stringlaenge := length(Zeichenkette);
r := 1;
repeat
if Zeichenkette[r] = 'x'
then
begin
delete (Zeichenkette,r,1);
insert ('(x+0)',Zeichenkette,r);
r := r +2;
end
else r := r+1;
until r = Stringlaenge;
Ich stelle also die Zeichenanzahl des Wortes fest, und suche jeden Char ab ob es ein X ist und will dies gegebenenfalls in (x+0) umwandeln. Nach der Umwandlung soll r um 2 erhöht werden weil er ja sonst immer wieder ein x finden würden. Ansonsten wird x um 1 erhöht damit er den Rest durchsucht.
Jetzt tritt folgendes Problem auf:
Bei 3*x^2 funktioniert alles wunderprächtig. Das wird zu 3*(x+0)^2.
Steht x jedoch am Anfang, also z.b. x oder x^2 wird es nicht umwandelt. Dort passiert gar nichts. Das selbe passiert wenn x am Ende steht, also z.b. 3^x.
Was mache ich falsch, dass der Anfang und das Ende nicht überprüft werden?
Ich hoffe ihr könnt mir helfen.
Edit: Habe gerade festgestellt, dass es funktioniert wenn x am Anfang steht. Es funktioniert nur nicht wenn X am Ende steht. Vielleicht stimmt etwas mit meiner Abbruchbedingung nicht?
Thx!