SZUKAJ NA TYM BLOGU

Zadanie 3.2. (0–1) ()

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
    ww + (n mod 10)
    n n div 10

1.Po wykonaniu algorytmu dla n = 45778 zmienna w przyjmuje wartość 30.PF
2.Po wykonaniu algorytmu dla liczby n wartością zmiennej w jest suma cyfr liczby n w zapisie dziesiętnym.PF
3.Podczas wykonywania algorytmu dla n = 1234 w kolejnych iteracjach pętli dopóki, zmienna w przyjmuje wartości 1, 3, 6, 10.PF
4.Po wykonaniu algorytmu dla n = 11111 zmienna w przyjmuje wartość 5.PF
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:

  1. Inicjalizuje zmienną na 0.
  2. 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.
  3. Po zakończeniu pętli, będzie zawierać sumę cyfr liczby .

Dla =45778, po wykonaniu tego algorytmu wartość przyjmuje wartość 30. Oznacza to, że suma cyfr liczby 45778 wynosi 30. Możemy to zweryfikować ręcznie:

4+5+7+7+8=31

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:

  1. =0
  2. =45778
    • =0+(45778mod10)=0+8=8
    • =45778÷10=4577
  3. =4577
    • =8+(4577mod10)=8+7=15
    • =4577÷10=457
  4. =457
    • =15+(457mod10)=15+7=22
    • =457÷10=45
  5. =45
    • =22+(45mod10)=22+5=27
    • =45÷10=4
  6. =4
    • =27+(4mod10)=27+4=31
    • =4÷10=0

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); } }