Suma cyfr w liczbie, pascal

Witam!

Mam następujący problem, chciałbym wiedzieć jak taki program zrobić który rozbija liczbę np 123 i robi 1+2+3

coś myślałem, żeby zrobić length(liczba) tylko się nie da i tu jest problem, może ktoś mi dać jakąś wskazówkę etc

Żeby dostać poszczególne cyfry z liczby całkowitej dzielisz modulo przez podstawę systemu (i masz cyfrę), potem dzielisz przez podstawę (uwzględniając tylko część całkowitą) i powtarzać.

umm niezbyt zrozumiałem xD

zmienna mod ?

Czego tu nie rozumiesz? Nie znam Pascala, ale pewnie operator dzielenie modulo to w nim “mod”. Tak więc “a mod b” zwraca resztę z dzielenia liczby a przez liczbę b.

W C wygląda to mniej więcej tak:

int a=0;

int suma=0;

do {

    a=liczba%10;

    suma+=a;

}

while (liczba = liczba/10);

operator % to w Pascalu MOD

dzielenie w warunku pętli wskazuje, że bierzemy tylko część całkowitą, więc w Pascalu będzie to operator DIV

dalej już chyba sobie poradzisz

W pascalu najprostszy kod dla tego jest trochę dziwaczny :smiley:

function SumaCyfr(N:Longint):Word;S:String;I:Integer;begin:=0;Str(N,S);I:=1 to Length(S) do Inc(SumaCyfr,Ord(S[I])-Ord('0'));end; [/code]