Autor Beitrag
Kaputnik120
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 19.02.05 19:38 
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
ausblenden Delphi-Quelltext
1:
2:
type
   TErgebnisarray = array[1..1000] of Integer;

Ankündigung der Funktion
ausblenden Delphi-Quelltext
1:
2:
private
  function PlusPositionen(s:string):TErgebnisarray

globale variablen
ausblenden Delphi-Quelltext
1:
2:
3:
var
  term : string;
  PlusAnzahl:Integer;

die funktion
ausblenden 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TRechner.IMAGEGleichClick(Sender: TObject); {ON-CLICK einer}    
VAR i:integer;                                        {Taschenrechner taste}
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 user profile iconraziel: Code- durch Delphi-Tags ersetzt.