AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

qwertz543221 kleine String-Math-Lib

Ein Thema von qwertz543221 · begonnen am 11. Jun 2009 · letzter Beitrag vom 14. Jun 2009
 
qwertz543221
(Gast)

n/a Beiträge
 
#20

Re: qwertz543221 kleine String-Math-Lib

  Alt 12. Jun 2009, 21:49
ich habe deinen vorschlag ausprobiert. anscheinend sind meine anderen funktionen nicht dafür geeignet. - das ergebnis stimmt fast nie.

ich gebe mal die weiteren fkts mit, vlt versteckt sich dort ein fehler ( ich konnte keinen finden, da die fkts an sich ihren dienst ordnungsgemäß erfüllen)

-----------------------------------------------------------------------------------------------------
Delphi-Quellcode:
function summe(a,b:ansistring):ansistring;

var i,l:longint;
u:longint;

begin
//mit Nullen auffüllen:

l:=length(a);
while l<length(b) do
begin
a:='0'+a;
l:=l+1;
end;

l:=length(b);
if length(a)>length(b)
  then
while length(a)>length(b) do
begin
b:='0'+b;
l:=l+1;
end
 else
  if length(b)>length(a)
   then
   while length(b)>length(a) do
   begin
   a:='0'+a;
   l:=l+1;
   end;
u:=0;
//Maximallänge festlegen
if length(a)>=length(b)
  then i:=length(a)
    else i:=length(b);

while i>=1 do
begin
//addition a+b+u
result:=inttostr((strtoint(a[i])+strtoint(b[i])+u)mod 10)+result;
//berechnung u
u:=(u+strtoint(a[i])+strtoint(b[i]) )div 10;
i:=i-1;
end;

i:=1;
result:=inttostr(u)+result;
a:=result;
//führende '0' löschen
while a[1]='0do
delete(a,1,1);
result:=a;
end;

function differenz(a,b:ansistring):ansistring;
var u,i,j,la,lb:longint;
c:ansistring;
  begin
  //zwei gleiche Zahlen:
  if a=b
  then result:='0'
  else
  //a>b?
if (vergleich(a,b)<>0 )and(a<>b)
  then
  begin
 showmessage('Subtraktion nicht möglich.');
  exit;
  end
    else
    begin
    //initialisieren
    result:='';
    la:=length(a);
    lb:=length(b);
    //anfangsübertrag setzen
    u:=0;
    j:=1;
    //mit nullen füllen
    if la<lb
      then
      while la<lb do
      begin
      a:='0'+a;
      la:=la+1;
      end
        else if lb<la
              then
              while length(a)>length(b) do
              begin
              b:='0'+b;
              lb:=lb+1;
              end;

//subtraktion beginnen - vgl. schriftliches rechnen
i:=length(b);
//von vorne nach hinten
while i>=1 do
begin
//übertrag?
if u=0
  then
  begin
  //neuen übertrag setzen
  if strtoint(a[i])<strtoint(b[i])
    then u:=10
      else u:=0;
  // nächste stelle des ergebnisses berechnen
  result:=inttostr((strtoint(a[i])+u-strtoint(b[i]))mod 10)+result;
  end
    else
    begin
    //wenn übertrag vorhanden:
    if strtoint(a[i])<strtoint(b[i])+1
      then u:=10
        else u:=0;
      //bei der nächten stelle eines subtrahieren,da übertrag; einerstelle zum ergebnis
      //hinzufügen
    result:=inttostr((strtoint(a[i])+u-1-strtoint(b[i])mod 10))+result
    end;
  i:=i-1;
  end;
//führende nullen löschen
c:=result;
while c[1]='0do
delete(c,1,1);
result:=c
end;
end;
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz