[Java] Suma cyfr pobranej liczby

karolinaa1231
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 4 cze 2012, o 07:57
Płeć: Kobieta
Lokalizacja: Lbn
Podziękował: 5 razy

[Java] Suma cyfr pobranej liczby

Post 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.
Ostatnio zmieniony 7 paź 2012, o 21:02 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
szw1710

[Java] Suma cyfr pobranej liczby

Post 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.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Java] Suma cyfr pobranej liczby

Post 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;}
karolinaa1231
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 4 cze 2012, o 07:57
Płeć: Kobieta
Lokalizacja: Lbn
Podziękował: 5 razy

[Java] Suma cyfr pobranej liczby

Post 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?
Ostatnio zmieniony 22 paź 2012, o 18:41 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Java] Suma cyfr pobranej liczby

Post 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ć?
karolinaa1231
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 4 cze 2012, o 07:57
Płeć: Kobieta
Lokalizacja: Lbn
Podziękował: 5 razy

[Java] Suma cyfr pobranej liczby

Post autor: karolinaa1231 »

bede obliczać ilość cyfr np w zmiennej iloscCyfr, tylko jak to dalej zrobic;/
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Java] Suma cyfr pobranej liczby

Post autor: royas »

Czy wg zadania masz obliczyć tylko ilość (liczbę) cyfr, czy może coś jeszcze?
karolinaa1231
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 4 cze 2012, o 07:57
Płeć: Kobieta
Lokalizacja: Lbn
Podziękował: 5 razy

[Java] Suma cyfr pobranej liczby

Post autor: karolinaa1231 »

iloscCyfr i sumaCyfr
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Java] Suma cyfr pobranej liczby

Post 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.
karolinaa1231
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 4 cze 2012, o 07:57
Płeć: Kobieta
Lokalizacja: Lbn
Podziękował: 5 razy

[Java] Suma cyfr pobranej liczby

Post 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
Ostatnio zmieniony 22 paź 2012, o 19:43 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[Java] Suma cyfr pobranej liczby

Post autor: royas »

Teraz nie wiem czego nie rozumiesz.
karolinaa1231
Użytkownik
Użytkownik
Posty: 35
Rejestracja: 4 cze 2012, o 07:57
Płeć: Kobieta
Lokalizacja: Lbn
Podziękował: 5 razy

[Java] Suma cyfr pobranej liczby

Post autor: karolinaa1231 »

Juz wszystko jasne, wyszło, kompiluje się, dziekuje slicznie za pomoc
ODPOWIEDZ