• 18.07.2025, 16:18
  • Registrieren
  • Anmelden
  • Du bist nicht angemeldet.

 

wacs601

Full Member

Pascal Hilfe beim Programmieren

Montag, 28. Juni 2004, 19:37

HI
Ich muss bzw. soll in Pascal ein Programm programmieren, welches einen mathematischen Term in sogenannte Token teilt.
D.h. folgender Term wird dann so zerhackt:
12*x^3+-45*x^2+5*x+123
Token:
12
*
x
^
3
+
-45
*
x
^
2
+
5
*
x
+
123
Nur hat mein Programm ein paar Probleme bei den letzten Stellen
D.h. bei diesem Term z.B.: 12*x+-1234 heißt das letzte Token
nicht -1234 sondern 4 !
Was kann ich da machen ?
Der Quellcode sieht so aus:
[tt] PROGRAM token;
USES CRT;
VAR zk, zahl,operator : STRING;
anzop, i, y : INTEGER;
stelle: array[0..1000] OF INTEGER;
fertig:boolean;
FUNCTION min (zk:STRING) : INTEGER;
VAR a : INTEGER;
BEGIN
a:=1;
For i:= 2 to length(zk) DO
BEGIN
IF zk IN ['+','-','*','/','^'] THEN
BEGIN
stelle[a]:=i;
a:=a+1;
END;
END;
min:=stelle[1];

END;

BEGIN
clrscr;
write('Bitte geben Sie den Term ein:');
readln(zk);
anzop:= 0 ;
FOR i:= 2 TO length(zk) DO
BEGIN
IF zk[i] IN ['+','-','*','/','^'] THEN anzop:= anzop+1;
END;
fertig:=false;
FOR y:= 1 TO anzop+1 DO
BEGIN;
if(fertig=false) then
begin
zahl:=copy(zk,1,min(zk)-1);
operator:=zk[min(zk)];
zk:=copy(zk,min(zk)+1,length(zk));
writeln('Token =',zahl);
writeln('Token =',operator);
if ( length(zk)<=2) THEN
BEGIN writeln('Token =',zk);
writeln('FERTIG');
fertig:=true;
END;
end;
END;
readln;
END.[/tt]
Ich hoffe es kennt sich jemand damit aus .

wacs601

Full Member

Re: Pascal Hilfe beim Programmieren

Montag, 28. Juni 2004, 22:00

*schieb*
Kennt sich denn keiner mit Pascal aus, wäre sehr dankbar für jede Hilfe.

Ingoing

Full Member

Re: Pascal Hilfe beim Programmieren

Montag, 28. Juni 2004, 23:34

Ich glaube es liegt daran das du dein Token nicht bis zur nächsten Unterbrechung erweiterst.
Sprich die Bedingung die das Token 'schließt' ist einfach die, eines 'Steuerzeichens' (*+:- usw)