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
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
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]