Einzelnen Beitrag anzeigen

Stutz

Registriert seit: 3. Apr 2006
Ort: Bad Waldsee
11 Beiträge
 
#8

Re: imaginäre Zahlen

  Alt 25. Jun 2008, 00:33
hi,

ich hab mal angefangen einen parser zu schreiben, der mir imaginär und realteil trennt. is zwar chaotisch und wahrscheinlich der am schlimmsten programmierte quellcode der hier bisher gepostet wird, aber ich kanns net besser und steh bisher noch dazu. falls ihr verbesserungsvorschläge habt, bin ich offen für alles.

Delphi-Quellcode:
function imaginaerteil_bestimmen(komplex:string):string;
var
   imaginaer,real,merker,vz:string;
   bimag:boolean;
   i:integer;
   offene_klammer:integer;
begin
   offene_klammer:=0;
   bimag := false;
   real := '';
   imaginaer :='';
   vz:='+';
   for i:=1to length(komplex)+1 do
   begin

      if (komplex[i] = '(')then
      offene_klammer := offene_klammer +1;


      if (komplex[i]=')')then
      offene_klammer := offene_klammer -1;


      if(offene_klammer =0) then //wenn an stelle i keine klammer offen ist
      begin


         if ((komplex[i] <> '+') and (komplex[i]<>'-')and (i<=length(komplex))) then //wenn inerhalb der punkt vor strich rechnung
         begin
            merker := merker+komplex[i];
            if komplex[i]='ithen
               begin
               bimag := true;
               end;

         end

         else if i>1 then//wenn plus oder minus kommt die volle gleichung in imaginaerteil oder realteil speichern
         begin
            if bimag = true then
            begin
               imaginaer := imaginaer +vz+ merker;
               bimag := false;
            end
            else
            begin
               real := real+vz+merker;
            end;
            merker := '';
         end;



      //aktuelles vorzeichen merken
         if komplex[i]='-then
         begin
            vz:='-';
         end;

         if komplex[i]='+then
         begin
            vz:='+';
         end;



      end


      else//inerhalb einer oder mehreren klammern
      begin
         merker := merker + komplex[i];//klammer wird prinzipiell als ganzes betrachtet
         //markieren wenn imaginaere zahl
         if komplex[i]='ithen
         begin
            bimag := true;
         end;
      end;





   end;
   
   imaginaerteil_bestimmen := 'realteil: '+real + #13 +'imaginaerteil: '+ imaginaer;
end;

PS:mir fiel gerade auf dass es sehr verwirrend is dass die schleifenvariable i heißt und ich ständig nach i suche, ich glaube das sollte ich so schnell wie möglich ändern

gruß
stutz
wer versucht das zu finden was er sucht, wird niemals erfolg haben,
um erfolg zu haben muss man das suchen was man findet.
  Mit Zitat antworten Zitat