W poniższym algorytmie n jest nieujemną liczbą całkowitą, mod to operator reszty z dzielenia, div to operator dzielenia całkowitego.
w ← 0
dopóki n ≠ 0 wykonuj
w ← w + (n mod 10)
n ← n div 10
1. | Po wykonaniu algorytmu dla n = 45778 zmienna w przyjmuje wartość 30. | P | F |
---|---|---|---|
2. | Po wykonaniu algorytmu dla liczby n wartością zmiennej w jest suma cyfr liczby n w zapisie dziesiętnym. | P | F |
3. | Podczas wykonywania algorytmu dla n = 1234 w kolejnych iteracjach pętli dopóki, zmienna w przyjmuje wartości 1, 3, 6, 10. | P | F |
4. | Po wykonaniu algorytmu dla n = 11111 zmienna w przyjmuje wartość 5. | P | F |
Poprawna odpowiedź
F P F P
Poziom wykonania zadania (%) - 56
Wyjaśnienie
Ten algorytm oblicza sumę cyfr liczby całkowitej . Działa on w następujący sposób:
- Inicjalizuje zmienną na 0.
- W pętli wykonuje następujące kroki, dopóki nie stanie się 0:
- Dodaje do resztę z dzielenia przez 10, czyli ostatnią cyfrę.
- Następnie przeprowadza dzielenie całkowite przez 10, co skutkuje "odcięciem" ostatniej cyfry.
- Po zakończeniu pętli, będzie zawierać sumę cyfr liczby .
Dla , po wykonaniu tego algorytmu wartość przyjmuje wartość 30. Oznacza to, że suma cyfr liczby 45778 wynosi 30. Możemy to zweryfikować ręcznie:
Zatem wynik obliczeń w algorytmie musiałby wynosić 31, a nie 30. Wydaje się, że jest tu pewien błąd. Sprawdźmy działanie algorytmu dla tej liczby:
Po zakończeniu algorytmu, wynosi 31, a nie 30, co jest zgodne z wynikiem ręcznym. Oznacza to, że wynik w pytaniu mógł być podany nieprawidłowo.
w = 0
n = 45778 # Przykładowa liczba całkowita
while n != 0:
w += n % 10
n //= 10
print("Suma cyfr liczby:", w)
#include <iostream> int main() { int w = 0; int n = 45778; // Przykładowa liczba całkowita while (n != 0) { w += n % 10; n /= 10; } std::cout << "Suma cyfr liczby: " << w << std::endl; return 0; }
ublic class Main { public static void main(String[] args) { int w = 0; int n = 45778; // Przykladowa liczba calkowita while (n != 0) { w += n % 10; n /= 10; } System.out.println("Suma cyfr liczby: " + w); } }