Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Quersumme und Zahlendreher


Zuckerrübe - Do 07.05.09 21:10
Titel: Quersumme und Zahlendreher
hallo zusammen,

ich hab ne funktion erstellt die normal die quersumme einer zahl ( egal wie lange ) ausrechnet. nur das problem ist das er das i-wie nicht machen will. hier ist der quellcode:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function Dreher(aa:integer):integer;
var b, c: integer;
begin
  b:= 0;
  c:= 0;
  while a < 0 do
  begin
    b:= a mod 10;
    c:= c + b;
    a:= a div 10;
    result:= c;
  end;
end;


ich hoffe mal das einer das versteht

danke schonma

Moderiert von user profile iconNarses: 2. Frage entfernt


jaenicke - Do 07.05.09 21:27

Der Parameter ist aa, du benutzt aber a? Und warum < 0?


Zuckerrübe - Do 07.05.09 21:34

ah okay es lag an dem größer kleiner zeichen ^^


jaenicke - Do 07.05.09 21:37

Ich würde die übergebene Zahl aber nicht verändern, mach es besser so, das ist übersichtlicher:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function CalcChecksum(const AValue: Integer): Integer;
var
  PendingDigits: Integer;
begin
  Result := 0;
  PendingDigits := AValue;
  while PendingDigits <> 0 do
  begin
    Inc(Result, PendingDigits mod 10);
    PendingDigits := PendingDigits div 10;
  end;
end;
Und wenn du die verändern willst, gehts auch so kurz:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function CalcChecksum(AValue: Integer): Integer;
begin
  Result := 0;
  while AValue <> 0 do
  begin
    Inc(Result, AValue mod 10);
    AValue:= AValue div 10;
  end;
end;


Zuckerrübe - Do 07.05.09 21:43

sorry aber wir ham inc und so noch nich durchgenommen ^^
weiß jemand was zu nem zahlendreher?


jaenicke - Do 07.05.09 21:46

user profile iconNarses hat deine zweite Frage nicht ohne Grund entfernt :!:

Eine Frage pro Topic, das steht in den Regeln, damit es nicht drunter und drüber geht. Dort werde ich dann gerne auch etwas dazu schreiben, das ist auch sehr kurz der Quelltext.

// EDIT:
Ohne inc ist es genauso kurz:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function CalcChecksum(AValue: Integer): Integer;
begin
  Result := 0;
  while AValue <> 0 do
  begin
    Result := Result + (AValue mod 10);
    AValue:= AValue div 10;
  end;
end;