Wpisany przez Tomasz Lubiński
wtorek, 11 stycznia 2011 13:45
Załóżmy, że mamy daną liczbę x i chcemy obliczyć sumę jej cyfr. Czyli, na przykład, jeżeli mamy daną liczbę x = 148, to w wyniku otrzymamy 1+4+8 = 13.
By rozwiązać to zadanie potrzebne będą nam dwie operacje:
By obliczyć sumę cyfr liczby x musimy wykonać następujące kroki:
Operację obliczania sumy cyfr liczby całkowitej x możemy zapisać następującym schematem blokowym:
Przykład:
Niech x będzie równe 148.
Na początku wynik ustawiamy na 0.
Dochodzimy do decyzji, czy x jest równe 0?
Nie, zatem:
wynik = wynik + (x mod 10) = 0 + (148 mod 10) = 0 + 8 = 8
x = x div 10 = 148 div 10 = 14
Sprawdzamy po raz kolejny, czy x jest równe 0?
Nie, zatem:
wynik = wynik + (x mod 10) = 8 + (14 mod 10) = 8 + 4 = 12
x = x div 10 = 14 div 10 = 1
Sprawdzamy po raz kolejny, czy x jest równe 0?
Nie, zatem:
wynik = wynik + (x mod 10) = 12 + (1 mod 10) = 12 + 1 = 13
x = x div 10 = 1 div 10 = 0
Sprawdzamy po raz kolejny, czy x jest równe 0?
Tak, zatem obliczyliśmy sumę cyfr liczby x=148, i wynik ten wynosi 13.
Przykład w JavaScript:
Dla zaawansowanych:
Przedstawiony algorytm oblicza sumę liczb dla systemu dziesiętnego. Można go jednak łatwo zaadoptować do obliczania sumy cyfr dla systemu liczbowego o dowolnej podstawie (np. dwójkowego lub szesnastkowego). W tym celu wystarczy przerobić fragment:
wynik = wynik + (x mod 10)
x = (x div 10)
na:
wynik = wynik + (x mod podstawa)
x = (x div podstawa),
gdzie podstawa jest wartością podstawy systemu liczbowego, dla którego chcemy obliczyć sumę cyfr (2 dla systemu dwójkowego, 10 dla dziesiętnego, 16 dla szesnastkowego, itp...). Jeżeli chcesz zobaczyć jak liczby dziesiętne wyglądają w innych systemach przeczytaj artykuł zamiana z i na system dziesiętny
By rozwiązać to zadanie potrzebne będą nam dwie operacje:
- dzielenie modulo (czyli reszta z dzielenia) - dzieląc x modulo 10 wyłuskamy z liczby x wartość jej ostatniej cyfry,
- dzielenie bez reszty (zwane czasem dzieleniem całkowitoliczbowym - div) - dzieląc x bez reszty przez 10, pozbędziemy się z niej ostatniej cyfry.
By obliczyć sumę cyfr liczby x musimy wykonać następujące kroki:
- na początku zainicjujemy wynik wartością 0,
- następnie dopóki x jest różne od 0:
- wynik = wynik + (x mod 10), czyli dodaj do wyniku wartość ostatniej cyfry,
- x = (x div 10), czyli usuń z przetwarzanej liczby ostatnią cyfrę (tej, której wartość właśnie dodaliśmy do wyniku).
Operację obliczania sumy cyfr liczby całkowitej x możemy zapisać następującym schematem blokowym:
Przykład:
Niech x będzie równe 148.
Na początku wynik ustawiamy na 0.
Dochodzimy do decyzji, czy x jest równe 0?
Nie, zatem:
wynik = wynik + (x mod 10) = 0 + (148 mod 10) = 0 + 8 = 8
x = x div 10 = 148 div 10 = 14
Sprawdzamy po raz kolejny, czy x jest równe 0?
Nie, zatem:
wynik = wynik + (x mod 10) = 8 + (14 mod 10) = 8 + 4 = 12
x = x div 10 = 14 div 10 = 1
Sprawdzamy po raz kolejny, czy x jest równe 0?
Nie, zatem:
wynik = wynik + (x mod 10) = 12 + (1 mod 10) = 12 + 1 = 13
x = x div 10 = 1 div 10 = 0
Sprawdzamy po raz kolejny, czy x jest równe 0?
Tak, zatem obliczyliśmy sumę cyfr liczby x=148, i wynik ten wynosi 13.
Przykład w JavaScript:
Dla zaawansowanych:
Przedstawiony algorytm oblicza sumę liczb dla systemu dziesiętnego. Można go jednak łatwo zaadoptować do obliczania sumy cyfr dla systemu liczbowego o dowolnej podstawie (np. dwójkowego lub szesnastkowego). W tym celu wystarczy przerobić fragment:
wynik = wynik + (x mod 10)
x = (x div 10)
na:
wynik = wynik + (x mod podstawa)
x = (x div podstawa),
gdzie podstawa jest wartością podstawy systemu liczbowego, dla którego chcemy obliczyć sumę cyfr (2 dla systemu dwójkowego, 10 dla dziesiętnego, 16 dla szesnastkowego, itp...). Jeżeli chcesz zobaczyć jak liczby dziesiętne wyglądają w innych systemach przeczytaj artykuł zamiana z i na system dziesiętny
| Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
| Tomasz Lubiński | C# | MS Visual Studio .net | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 |
| Tomasz Lubiński | C/C++ | ![]() | ![]() |
![]() ![]() ![]() ![]() / 4 | |
| Marian | C/C++ | C++ | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 |
| Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | ![]() | ![]() |
![]() ![]() ![]() ![]() / 4 |
| Tomasz Lubiński | Java | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 | |
| Tomasz Lubiński | Java Script | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 | |
| Dominik Goździuk | Perl | ![]() | ![]() |
![]() ![]() ![]() ![]() / 0 | |
| _marass_ | Php | ![]() | ![]() |
![]() ![]() ![]() ![]() / 3 | |
| Jakub Konieczny | Python | ![]() | ![]() |
![]() ![]() ![]() ![]() / 2 |
Poprawiony: piątek, 27 maja 2011 07:18



/ 2






Komentarze
Zamienić liczbę na string;
Znaleźć długość ciągu;
pętla 1 do długość
S = S + Ciąg[I];
I = I + 1;