[Java] Suma cyfr pobranej liczby
-
- 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
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.
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.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
[Java] Suma cyfr pobranej liczby
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.
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.
-
- 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
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
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
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;}
-
- 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
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(
}
}
}
Ostatnio zmieniony 22 paź 2012, o 18:41 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Powód: Poprawa wiadomości.
-
- 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
Prawdę mówiąc nie za wiele jest tu do poprawiania.
Do linii
rozumiem ze zmienna
Jakie jeszcze rzeczy będziesz obliczać i w jakich zmiennych będziesz je przechowywać?
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ć?
-
- 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
bede obliczać ilość cyfr np w zmiennej iloscCyfr, tylko jak to dalej zrobic;/
-
- 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
Czy wg zadania masz obliczyć tylko ilość (liczbę) cyfr, czy może coś jeszcze?
-
- Użytkownik
- Posty: 35
- Rejestracja: 4 cze 2012, o 07:57
- Płeć: Kobieta
- Lokalizacja: Lbn
- Podziękował: 5 razy
-
- 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
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
Po wykonaniu tego
Zróbmy więc pętlę który wykona się tyle razy ile mamy cyfr:
Czy widzisz to, że w każdym obiegu pętli
Spróbuj teraz tak uzupełnić ten kod, aby w momencie zakończenia pętli
\(\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
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;
}
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.-
- 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
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.
Powód: Poprawa wiadomości.
-
- 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
Juz wszystko jasne, wyszło, kompiluje się, dziekuje slicznie za pomoc