[delphi]suma cyfr w zmiennej

0

czesc, mam problem dosc powazny- z programowaniem nie mam do czynienia na codzien stad moje pytanie:
potzrebna mi funnkcja sumujaca cyfry w zmiennej np cyfra: 1234 = 10 cyfr.....
znalazlem na necie taki kod:

var
  s,l,i:longint;
  pyt:char;
begin
repeat
 writeln('Program obliczajacy sume cyfr z podanej liczby');
 writeln;
 writeln('Prosze podaj liczbe:');
 readln(l);
 s:=0;
 i:=0;
while l>0 do
 begin
          s:=s+l mod 10;
          l:=l div 10;
          i:=i+1; {Oblicza ile razy pętla jest wykonywana = ile cyfr ma podana liczba}
 end;

 writeln('Suma cyfr z Twojej liczby wynosi: ',s);
 writeln('Podana liczba składa się z ',i);
 write(' cyfr');
 writeln('Powtorzyc? (T)ak/(N)ie');
 readln(pyt);

 until not((pyt='T') or (pyt='t'));
  readln;
 end.

dziala ale chodzi mi oto czy nie ma jakiegos prostszego sposobu na to, mozejakas wbudowana funkcja ??
bo jakby mial usiasc i pisc to z pamieci to wyzej to bym dluuugo pisal ..... takze prosze kolegow o pomoc pozdro!

0

var tmp : String;
i : Integer;
wynik : Integer;

...

tmp := IntToStr(_dana_liczba);
wynik := 0;
For i := 1 to Length(tmp) do
wynik := wynik + StrToInt(tmp[i]);

0

wery gód bobik dzieki

0

trunc(ln(x)/ln(10)+1)

0

panie dobrowolski mozna jasniej???

0

wedle mnie pierwszy sposob podany przez ciebie jest lepszy. Rozumiem ze chcialem zrobic to jak najprosciej ale jezeli zadales takie pytanie i mowisz o pisaniu z glowy to moze potrzebujesz no na uczelnie lub cos w tym stylu. Jezeli mam racje to twoj przyklad znaleziony w sieci jest lepszy poniewaz w takich zadaniach nie chodzi aby napisac sume tylko czy potrafi sie korzystac z petli while..do, czy jakiejkolwiek innej. To tak jak bys mial napisac program ktory oblicza wartosc bezwzgledna z liczby, program banalnie prosty ale sprawdza czy rozumiesz warunki bo nie sztuka napisac abs(liczba). Jezeli to tylko tak dla ciebie to sposob jest dowolny i nie ma co sobie komplikowac zycie i drugo przykllad jest jak najbardziej ok

0

ln(x)/ln(10)=log(x) =logarytm przy podstawie dziesięć z iks

log(10)=1
log(100)=2
log(1000)=3

jak dodamy 1 to mamy mniej więcej liczbę znaków jeżeli zaokrąglimy do lliczby całkowitej w dół

tylko nie wiem czy bedzie dzialalo dla ułamków ...bo zaczniemy otrzymywac ujemne liczby albo dla ujemmnych to już całkiem kapota

(chociaz moje doswiadczenie z programowanie jest marne to jednak ta metoda jest szokująco inteligetna gratuluje pomysłu )

1 użytkowników online, w tym zalogowanych: 0, gości: 1