Artur 63 wyśw. 03-07-2025 12:09

Praca domowa 2 zad 19

19. Wersja trudniejsza poprzedniego zadania: program ma wypisać każdą cyfrę danej liczby z osobna
na ekran w odwrotnej kolejności ich wystąpienia (to jest łatwiejsze niż zrobienie tego w normalnej
kolejności), a następnie obliczyć i wyświetlić na ekranie sumę, iloczyn oraz średnią arytmetyczną z
tych cyfr. Przykładowy wynik działania programu:
Wybrana liczba naturalna: 12345
Cyfry wybranej liczby wypisane od tyłu: 5 4 3 2 1
Suma cyfr: 15
Iloczyn cyfr: 120
Średnia arytmetyczna z cyfr: 3.0


        int liczba=12345;
        System.out.println("Wybrana liczba naturalna: "+liczba);
        System.out.print("Cyfry wybranej liczby wypisane od tylu: ");
        int suma=0;
        int iloczyn=1;
        int ile=0;
        while (liczba != 0)
        {
            
            System.out.print(liczba%10+" ");
            suma+=liczba%10;
            iloczyn*=liczba%10;
            liczba /= 10; // liczba = liczba / 10 , !!! dzielenie liczb calkowitych "obcina" reszte z dzielenia przez 10 !!!
            ile++;
           
        }
        System.out.println("\nPodana liczba ma " + ile + " cyfr.");
        System.out.println("Suma cyfr: "+suma);
        System.out.println("Iloczyn cyfr: "+iloczyn);
        System.out.println("Srednia arytmetyczna z cyfr: "+(double)suma/ile);


Dlaczego w pętli while nie ma znaczenia, w której linijce dam "ile++", ale to, w której linijce dam "liczba /= 10" ma już znaczenie?


Programowanie Dodaj post do ulubionych Poproś o pomoc
s.gugula 04-07-2025 11:01

Przy tak ogólnym pytaniu odpowiedź też może być raczej tylko bardzo ogólna - kolejność napisania komend/instrukcji generalnie zawsze ma znaczenie - tzn. kompilator wykonuje te operacje w takiej kolejności w jakiej je zapiszemy w kodzie. Z tym, że czasem nie zmienia to pożądanego sposobu działania programu, a czasem zmienia. Więc w ogólności program zawsze będzie inaczej działał, jeśli zmienisz kolejność instrukcji, no bo będzie je wykonywał w zmienionej kolejności. Tu np. zapisanie liczba /= 10 przed liczeniem sumy i iloczynu jak widać musi coś zmienić, no bo wtedy ta suma i iloczyn będą wykorzystywały inną wartość zmiennej liczba niż przed zmianą.


Artur 04-07-2025 13:18

Dziękuję :)