Strona 1 z 1

[Java] Suma cyfr pobranej liczby

: 7 paź 2012, o 20:39
autor: karolinaa1231
Prosze o pomoc w napisaniu programu w javie

Zad.1
Napisz program, ktory poprosi uzytkownika o podanie liczby calkowitej, pobierze ja, a nastepnie wyznaczy i wyswietli informacje o ilosci jej cyfr, obliczy ich sume i wyswietli ja w postaci komunikatu dla uzytkownika.

Bede bardzo wdzieczna za pomoc.

[Java] Suma cyfr pobranej liczby

: 7 paź 2012, o 21:15
autor: szw1710
Kolejne cyfry są resztami z dzielenia przez \(\displaystyle{ 10}\) odpowiednich ilorazów.

Weźmy liczbę \(\displaystyle{ 1234}\). Reszta z dzielenia przez \(\displaystyle{ 10}\) jest ostatnią cyfrą. Nieprawdaż? Teraz odejmujemy \(\displaystyle{ 4}\), mamy \(\displaystyle{ 1230.}\) Dzielimy przez \(\displaystyle{ 10}\) i mamy \(\displaystyle{ 123}\). Ostatnia cyfra to \(\displaystyle{ 3}\). A zarazem druga od końca cyfra z \(\displaystyle{ 1234.}\) I powtarzamy postępowanie: odejmujemy \(\displaystyle{ 3}\), mamy \(\displaystyle{ 120}\) i dzielimy przez \(\displaystyle{ 10}\) mając \(\displaystyle{ 12}\) z ostatnią cyfrą \(\displaystyle{ 2.}\) Odejmujemy \(\displaystyle{ 2}\) dostając \(\displaystyle{ 10}\), dzielimy przez \(\displaystyle{ 10}\) i wychodzi \(\displaystyle{ 1}\) i jest to pierwsza cyfra.

W gruncie rzeczy system dziesiętny nie ma tu żadnego znaczenia. Dzieląc przez \(\displaystyle{ 3}\) mamy np. cyfry trójkowe.

[Java] Suma cyfr pobranej liczby

: 7 paź 2012, o 22:07
autor: royas
W Javie wygląda to jeszcze prościej, gdyż jeśli dzielisz int przez int to jest to dzielenie całkowite, więc możesz pominąć odejmowanie ostatniej cyfry. Ostatnią cyfrę x uzyskujesz przez x%10.

Liczba cyfr liczby x w systemie n to \(\displaystyle{ \lceil \log_n s\rceil}\), choć w tym przypadku wystarczy zwykłe zliczanie wykonań pętli.

Czyli główna część będzie wyglądała tak

Kod: Zaznacz cały

while(x>0) {
  licznik++;
  suma += x%10
  x/=10;}

[Java] Suma cyfr pobranej liczby

: 22 paź 2012, o 15:06
autor: karolinaa1231

Kod: Zaznacz cały

import java.io.Console;
public class Zadanie12 {
    public static void main(String[] agrs) {
        int liczba;
        int iloscCyfr;
        Console konsola=System.console();
        System.out.println("Program sprawdza czy liczba jest calkowita oraz ile ma cyfr i jaka jest ich suma");
        System.out.println("Podaj liczbe calkowita");
        liczba = Integer.parseInt(konsola.readLine());
      
          liczba= abs(int liczba);
          if(liczba == 0){
              System.out.println("Podana liczba ma" + liczba + "cyfr");
          }else{
              public static double floor(double liczbaCyfr)
              liczba=log10(
          }
        
    }
}
Napisalam tak mogłabym prosic o poprawienie?

[Java] Suma cyfr pobranej liczby

: 22 paź 2012, o 16:24
autor: royas
Prawdę mówiąc nie za wiele jest tu do poprawiania.
Do linii liczba = Integer.parseInt(konsola.readLine()); jest ok.

rozumiem ze zmienna liczba ma przechowywać podaną liczbę.
Jakie jeszcze rzeczy będziesz obliczać i w jakich zmiennych będziesz je przechowywać?

[Java] Suma cyfr pobranej liczby

: 22 paź 2012, o 16:42
autor: karolinaa1231
bede obliczać ilość cyfr np w zmiennej iloscCyfr, tylko jak to dalej zrobic;/

[Java] Suma cyfr pobranej liczby

: 22 paź 2012, o 17:11
autor: royas
Czy wg zadania masz obliczyć tylko ilość (liczbę) cyfr, czy może coś jeszcze?

[Java] Suma cyfr pobranej liczby

: 22 paź 2012, o 17:16
autor: karolinaa1231
iloscCyfr i sumaCyfr

[Java] Suma cyfr pobranej liczby

: 22 paź 2012, o 17:53
autor: royas
Teraz wyobraź sobie co robi dzielenie z resztą
\(\displaystyle{ 1456/10=145, r.6}\)
Czyli każde podzielenie z resztą i odrzucenie reszty, tak naprawdę usuwa ostatnią cyfrę z liczby.
Widzisz to?
Jeżeli zmienne są typu int to zwykłe dzielenie działa właśnie w ten sposób

Kod: Zaznacz cały

int a=1456;
int b;
b=a/10
Po wykonaniu tego b będzie równe 145.
Zróbmy więc pętlę który wykona się tyle razy ile mamy cyfr:

Kod: Zaznacz cały

int liczba=1456//to tak przykładowo, liczba powinna być wczytana;
int liczbaCyfr=0;
int sumaCyfr=0;
while (liczba>0) {
    //tu będziemy coś liczyć
    liczba=liczba/10; 
}
Czy widzisz to, że w każdym obiegu pętli liczba będzie miała obciętą ostatnią cyfrę i pętla wykona się tyle razy ile jest cyfr?
Spróbuj teraz tak uzupełnić ten kod, aby w momencie zakończenia pętli liczbaCyfr mówiłą ile cyfr miała liczba na początku.

[Java] Suma cyfr pobranej liczby

: 22 paź 2012, o 19:00
autor: karolinaa1231

Kod: Zaznacz cały

while (liczba>0) {
        iloscCyfr ++;
        sumaCyfr= sumaCyfr + liczba%10;
   	    liczba=liczba/10; 
  }

Chodzi o ta reszte?
Nie mam pojecia jak z ta ilościa zrobic

[Java] Suma cyfr pobranej liczby

: 22 paź 2012, o 19:12
autor: royas
Teraz nie wiem czego nie rozumiesz.

[Java] Suma cyfr pobranej liczby

: 22 paź 2012, o 19:58
autor: karolinaa1231
Juz wszystko jasne, wyszło, kompiluje się, dziekuje slicznie za pomoc