(*$B- Aufgabe 2.4 *) PROGRAM bruchrechnen; TYPE longint = integer; bruch = RECORD zaehler,nenner:longint END; VAR a,b,res:bruch; x:longint; ch,op:char; tf:text; stri:string[20]; (*$I kuerzen *) (*$I liesbruch *) (*$I schreibbruch *) (*$I bruchop *) BEGIN writeln('Wohin mit dem Output?'); readln(stri); assign(tf,stri); rewrite(tf); REPEAT writeln('Rechnung eingeben');writeln; res.zaehler:=0; res.nenner:=1; op:='+'; write(tf,' '); REPEAT liesbruch(a,ch); IF (stri<>'CON:') AND (stri<>'con:') THEN schreibbruch(a); writeln(tf); kuerzen(a); CASE op OF '+' : add(res,a,res); '-' : sub(res,a,res); '*' : mal(res,a,res); '/',':': teil(res,a,res); END; WHILE NOT (ch IN ['*','/','+','-',':','=']) DO read(ch); op:= ch; IF (stri<>'CON:') AND (stri<>'con:') THEN IF op IN ['/',':'] THEN write(tf,' : ') ELSE write(tf,' ',op,' ') UNTIL op = '='; schreibbruch(res); gemzahl(res,x,res); IF res.zaehler <0 THEN op:=' ' ELSE op:='+'; IF (x<>0) AND (res.zaehler<>0) THEN writeln(tf,' = ',x,' ',op,' ',res.zaehler,'/',res.nenner); writeln(tf);writeln(tf); writeln('weiterfahren (RET) fertig (CTRL-Z) '); readln UNTIL eof(input); close(tf) END.