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
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