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
    w ← w + (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+(45778mod  10)=0+8=8
    • �=45778÷10=4577
  3. �=4577
    • �=8+(4577mod  10)=8+7=15
    • �=4577÷10=457
  4. �=457
    • �=15+(457mod  10)=15+7=22
    • �=457÷10=45
  5. �=45
    • �=22+(45mod  10)=22+5=27
    • �=45÷10=4
  6. �=4
    • �=27+(4mod  10)=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); } }