preciso de uma ajuda com um exercicio de logica de programação pois nao tenho a minima ideia de como fazer alguem me ajuda?
exercicio
Um truque bem conhecido para descobrir se um inteiro N é um múltiplo de nove é computar a soma S dos seus dígitos. Se S é um múltiplo de nove, então N também é.
Se o número de algarismos da soma é 2, por exemplo, dizemos que o grau-9 é 2. Se o número de algarismos da soma é 3, dizemos que o grau-9 é 3. E assim por diante.
Escreva um programa que, dado um inteiro positivo N, determinar se ele é um múltiplo de nove e, caso ele seja, qual o seu grau-9.
A entrada de dados consiste em vários testes e, em cada teste um número inteiro positivo deve ser lido. O programa encerra-se quando este número for zero.
A saída do programa deve indicar, para cada número da entrada, se ele é um múltiplo de nove e, caso ele seja, o seu grau-9.
Veja alguns exemplos:
Entrada: 99999
Cálculo a ser feito pelo programa: 9+9+9+9+9 = 45
Saída: 99999 é múltiplo de 9 e seu grau-9 é 2.
Entrada: 999999999999
Cálculo a ser feito pelo programa: 9+9+9+9+9+9+9+9+9+9+9+9 = 108
Saída: 999999999999 é múltiplo de 9 e seu grau-9 é 3.
Entrada: 45
Cálculo a ser feito pelo programa: 4+5 = 9
Saída: 45 é múltiplo de 9 e seu grau-9 é 1.
Entrada: 998
Cálculo a ser feito pelo programa: 9+9+8 = 26
Saída: 998 não é múltiplo de 9
Entrada:
0
Olha, tenho certeza que você sabe por onde começar, talvez, não se sinta segura.
Mas, lembre-se, o processo de aprendizado contempla errar e acertar. E isso é fundamental. Você não começou a andar e saiu correndo. Certamente tropeçou, caiu, levantou e foi, passo a passo, se equilibrando até conseguir correr.
Isso não significa que não voltou a cair, apenas que as quedas se tornaram menos frequentes.
Sobre o algoritmo:
1 - Organize todas as informações que precisa, defina se são variáveis a serem utilizadas ou não.
2 - Ordene os passos que precisa seguir para resolver cada uma das questões propostas
3 - Monte o algoritmo e faça o famosos teste de mesa: verifique “na mão” se faz sentido o que você escreveu.
comecei ja so que agora não sei como faço pra definir o grau?
package exercicios;
import java.util.Scanner;
public class Avaliacao {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Informe um número: ");
int num = new Scanner(System.in).nextInt();
int soma = 0;
while(num>0) {
soma += (num % 10);
num /= 10;
System.out.println("O valor de soma é: " + soma);
}
System.out.println();
System.out.println("A soma dos algarismos é: " + soma);
}
}</code>
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Informe um número: ");
int num = new Scanner(System.in).nextInt();
int soma = 0;
while(num>0) {
soma += (num % 10);
num /= 10;
}
System.out.println();
System.out.println("A soma dos algarismos é: " + soma);
if(soma == 9) {
System.out.println(" O Número é múltiplo de 9");
}else {
System.out.println("O número não é múltiplo de 9");
}
String s = Integer.toString(num);
System.out.println("o grau 9 é " +s.length());
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Informe um número: ");
int num = new Scanner(System.in).nextInt();
int soma = 0;
if(num == 0) {
System.exit(num);
}
System.out.println("a saída é "+num);
while(num>0) {
soma += (num % 10);
num /= 10;
}
System.out.println();
System.out.println("A soma dos algarismos é: " + soma);
if(soma == 9) {
System.out.println(" O Número é múltiplo de 9");
}else {
System.out.println("O número não é múltiplo de 9");
}
String s = Integer.toString(num);
System.out.println("o grau 9 é " +s.length());
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Informe um número: ");
int num = new Scanner(System.in).nextInt();
int soma = 0;
if(num == 0) {
System.exit(num);
}
System.out.println("a saída é "+num);
while(num>0) {
soma += (num % 10);
num /= 10;
}
System.out.println();
System.out.println("A soma dos algarismos é: " + soma);
if(soma == 9) {
System.out.println(" O Número é múltiplo de 9");
}else {
System.out.println("O número não é múltiplo de 9");
}
String s = Integer.toString(num);
System.out.println("o grau 9 é " +s.length());
Fui testar agora estou com um probleminha nesta parte mas nao sei como fazer quando a soma dos algarismos da 9 ele fala q é multiplo de nove só que não são todos por exemplo se a soma dos algarismos da 45 ele ja fala que não é multiplo de nove mais é quando é dois numeros ele nao esta somando ai nao esta dando certo o if o que posso fazer nao tenho ideia ja pensei e pensei e nao sei como fazer é essa parte aqui sei q ta errado o if mas nao sei o que coloco
if(soma == 9) {
System.out.println(" O Número não é múltiplo de 9");
}else {
System.out.println(“O número é múltiplo de 9”);
}if(soma == 9) {
String s = Integer.toString(soma);
System.out.println("o grau 9 é " +s.length());
} else {
System.out.println(“Este número não possui grau pois não é um múltiplo de 9”);
}
Assim, vou lhe ajudar a pensar na solução.
Um número que é múltiplo de 9 quando multiplicado por 1, 2, 3, 4, …, resulta 9, 18, 27, 36, … e não deixa resto quando da divisão por 9.
O seu if que verifica se é múltiplo de 9 precisa ser alterado para que a igualdade sinalize que é um número que atenda a condição.
fiz uma alteração no código acredito que agora foi da uma olhada pra ver se ta certo?
package exercicios;
import java.util.Scanner;
public class Avaliacao {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Informe um número: ");
int num = new Scanner(System.in).nextInt();
int soma = 0;
if(num == 0) {
System.exit(num);
}
System.out.println("a saída é "+num);
while(num>0) {
soma += (num % 10);
num /= 10;
}
System.out.println("A soma dos algarismos é: " + soma);
num = soma%9;
System.out.println("o número deu "+num);
if(num == 0) {
System.out.println("O número é múltiplo de 9");
}else {
System.out.println("O número não é múltiplo de 9");
}if(num == 0) {
String s = Integer.toString(soma);
System.out.println("o grau 9 é " +s.length());
}else {
System.out.println("o número não possui grau pois não é multiplo de 9");
}
}
outro problema quando faço teste com esse número estora a string
e da erro o resto agora da certo.
Informe um número:
999999999999
Exception in thread “main” java.util.InputMismatchException: For input string: “999999999999”
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at exercicios.Avaliacao.main(Avaliacao.java:10)
Acertou a questão do if, mas poderia escrever assim: if((soma % 9) ==0) {
Vou colocar a minha abordagem para você comparar. Há s.m.j. outras formas de fazer, mas esta funciona bem.
public class Avaliacao {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Informe um número: ");
int num = new Scanner(System.in).nextInt();
int soma = 0;
while (num > 0) {
soma += (num % 10);
num /= 10;
}
System.out.println("A soma dos algarismos é: " + soma);
if ((soma % 9) == 0) {
String s = Integer.toString(soma);
System.out.println("O Número é múltiplo de 9 e o seu grau 9 é " + s.length());
} else {
System.out.println("O número não é múltiplo de 9");
}
}
}
Com relação ao estouro é que está utilizando int para a variável que é limitada em relação a long ou double.
Mude e faça os teste para ver.