AGB  ·  Datenschutz  ·  Impressum  







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

Exakte Addition langer Zahlen

Ein Thema von ginimausi · begonnen am 19. Mär 2009 · letzter Beitrag vom 25. Mär 2009
Antwort Antwort
Seite 5 von 5   « Erste     345   
mr_emre_d
(Gast)

n/a Beiträge
 
#41

Re: Exakte Addition langer Zahlen

  Alt 19. Mär 2009, 20:15
Angepasst -> 16 ms bei 200.000

Delphi-Quellcode:
function StrAddition( Str1, Str2: PString ): PString;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
const
  VN: set of char = [ '0'..'9' ];
var
  i, Carry, t: Integer;
  L, S: PString;
  B: String;
begin
  {valid numbers}
    for i := 1 to Length( Str1^ ) do
      if not ( Str1^[i] in VN ) then
        Exit;
    for i := 1 to Length( Str2^ ) do
      if not ( Str2^[i] in VN ) then
        Exit;
  {equate strings}
    if Length( Str1^ ) <> Length( Str2^ ) then
    begin
      L := Str1;
      S := Str2;
      if Length( Str1^ ) < Length( Str2^ ) then
      begin
        L := Str2;
        S := Str1;
      end;
      SetLength( B, Length( L^ ) - Length( S^ ) );
      FillChar( B[1], Length( L^ ) - Length( S^ ), '0' );
      S^ := B + S^;
    end;
  {maincode}
  New( Result );
  SetLength( Result^, Length( Str1^ ) );
  Carry := 0;
  for i := Length( Str1^ ) downto 1 do
  begin
    t := ( ( PByte( @Str1^[i] )^ and 15 ) + ( PByte( @Str2^[i] )^ and 15 ) + Carry );
    Result^[i] := IntToStr( t mod 10 )[1];
    Carry := t div 10;
  end;
  if Carry > 0 then
    Result^ := IntToStr(Carry) + Result^;
end;
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#42

Re: Exakte Addition langer Zahlen

  Alt 19. Mär 2009, 20:24
Delphi-Quellcode:
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
  cdecl pascal near register far stdcall near far assembler; inline;
Wat is das denn?
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#43

Re: Exakte Addition langer Zahlen

  Alt 19. Mär 2009, 20:26
Verzierung

~inline
  Mit Zitat antworten Zitat
ginimausi

Registriert seit: 22. Feb 2009
15 Beiträge
 
#44

Re: Exakte Addition langer Zahlen

  Alt 24. Mär 2009, 09:33
ne ich hab das programm immernoch nich^^
sin ja ganz schön lange texte :-O
danke für die antworten, aber ich glaube ich versteh es immernoch nich
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#45

Re: Exakte Addition langer Zahlen

  Alt 24. Mär 2009, 09:40
Immerhin biste ehrlich.
Hast Du Dir denn mittlerweile überlegt, wie man von Hand (also manuell) zwei Zahlen addiert? Ich denke mal, das solltest Du mit zwei Zahlen größer 100 machen, sonst geht das per Kopf zu einfach

Wenn Du das hast, schreib es doch mal hier hin. Dann können wir gemeinsam schauen, wie das in Delphi zu überführen ist.

Edith hat total viele Fehler gefunden und einige korrigiert.

Sherlock
Oliver
  Mit Zitat antworten Zitat
ginimausi

Registriert seit: 22. Feb 2009
15 Beiträge
 
#46

Re: Exakte Addition langer Zahlen

  Alt 25. Mär 2009, 10:09
ok
also nehmen wir mal die 182 und 321

ich rechne 182 + 321 ;
ich addiere nacheinander erst die einser, dann die zehner, dann die hunderter. usw.

aber wie mache ich das als programm=
  Mit Zitat antworten Zitat
ginimausi

Registriert seit: 22. Feb 2009
15 Beiträge
 
#47

Re: Exakte Addition langer Zahlen

  Alt 25. Mär 2009, 10:12
was ich die ganze zeit vergessen habe,

die programmsprache ist delphi win32
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#48

Re: Exakte Addition langer Zahlen

  Alt 25. Mär 2009, 10:15
Die logische Vorgehensweise ist jetzt zig mal erklärt worden und Code wurde auch bereits reichlich gepostet. Was ist denn jetzt noch unklar?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 5   « Erste     345   


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 01:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz