Hi,
diese Funktion ist für einen etwas erweiterten Taschenrechner gedacht, der auch Terme(also mit Klammern) ausrechnen kann. Er braucht nicht mit unbekannten(x,y,...) rechnen können sondern nur mit reellen Zahlen.
Ich hab mir überlegt eine Funktion zu schreiben, die alle Pluse in dem Term speichert und ihre Positionen in dem Term als Array speichert. Meine Idee lautet wie folgt:
eigenes Array als Typ
Delphi-Quelltext
1: 2:
| type TErgebnisarray = array[1..1000] of Integer; |
Ankündigung der Funktion
Delphi-Quelltext
1: 2:
| private function PlusPositionen(s:string):TErgebnisarray |
globale variablen
Delphi-Quelltext
1: 2: 3:
| var term : string; PlusAnzahl:Integer; |
die funktion
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| function TRechner.PlusPositionen(s:string):TErgebnisarray; VAR i,plusZaehler:integer; begin plusZaehler:=0; for i:=0 to 999 do begin if s[i]='+' then begin PlusPositionen[plusZaehler]:=i; inc(plusZaehler); end; end; |
Ich denke, dass diese Funktion funktioniert, aber meine Idee zur Ausgabe ist glaube ich fehlerhaft:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TRechner.IMAGEGleichClick(Sender: TObject); VAR i:integer; begin for i:=0 to plusanzahl do begin LInfo.caption:=LInfo.caption+'|'+IntToStr(plusPositionen(term)[i]); end; end; |
zum Beispiel:
term:='2+4';
Pluse:
|1 //richtig
term:='2+4+5';
Pluse:
|2 //falsch richtig wäre:|2|4
term:='2+4+5+6+7+8'
Pluse:
|2 //falsch richtig wäre:|2|4|6|8|10
Kann mir jemand sagen wo der Fehler liegt?
Ich suche schon Stunden und finde ihn nicht.
Vielen, Vielen Dank für jeden Tipp.
Gruß Uli
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.