Soma de um numero ao seu inverso ate achar um numero palindromo

Oi gente.boa tarde,estou com um probleminha com java,preciso criar um programa que some um numero (digitado pelo usuario) com o seu inverso ate achar um numero palindromo.

bem… o inverso do número não seria seu palíndromo?
por exemplo: 12 = 21 são palíndromos( na minha visão).
Então qual número eu devo procurar com a soma?

primeiro, ele informa um número dentro de uma string ou vc converta ele pra uma string.
em sequência, use o charAt() dentro de um for pra captura o inverso da String, convertendo em seguida para número em outra variável.
Depois some ambas e procure o tal do palíndromo que eu não entendi.
Ex:

[code]
String numf="",num = JOptionPane.showInputDialog(“Informe o número”);
int primeiro,ultimo,soma;

for(int i=num.length()-1;i>0;i++){
numf += num.charAt(i);
}

primeiro = Integer.parseInt(num);
ultimo = Integer.parseInt(numf);

soma = primeiro + ultimo;

if(soma == palíndromo){

}else{

}[/code]

Espero ter ajudado.

[quote=ByIvo]bem… o inverso do número não seria seu palíndromo?
por exemplo: 12 = 21 são palíndromos( na minha visão).
Então qual número eu devo procurar com a soma?

primeiro, ele informa um número dentro de uma string ou vc converta ele pra uma string.
em sequência, use o charAt() dentro de um for pra captura o inverso da String, convertendo em seguida para número em outra variável.
Depois some ambas e procure o tal do palíndromo que eu não entendi.
Ex:

[code]
String numf="",num = JOptionPane.showInputDialog(“Informe o número”);
int primeiro,ultimo,soma;

for(int i=num.length()-1;i>0;i++){
numf += num.charAt(i);
}

primeiro = Integer.parseInt(num);
ultimo = Integer.parseInt(numf);

soma = primeiro + ultimo;

if(soma == palíndromo){

}else{

}[/code]

Espero ter ajudado.[/quote]

Boa noite, ByIvo!

Duas pequenas correções no seu for:[code]String numf="",num = JOptionPane.showInputDialog(“Informe o número”);
int primeiro,ultimo,soma;

for(int i=num.length()-1;i>=0;i–){ // Correções i >= 0 e i–
numf += num.charAt(i);
}

primeiro = Integer.parseInt(num);
ultimo = Integer.parseInt(numf);

soma = primeiro + ultimo;

if(soma == palíndromo){

}else{

}[/code]

[quote=Vingdel][quote=ByIvo]bem… o inverso do número não seria seu palíndromo?
por exemplo: 12 = 21 são palíndromos( na minha visão).
Então qual número eu devo procurar com a soma?

primeiro, ele informa um número dentro de uma string ou vc converta ele pra uma string.
em sequência, use o charAt() dentro de um for pra captura o inverso da String, convertendo em seguida para número em outra variável.
Depois some ambas e procure o tal do palíndromo que eu não entendi.
Ex:

[code]
String numf="",num = JOptionPane.showInputDialog(“Informe o número”);
int primeiro,ultimo,soma;

for(int i=num.length()-1;i>0;i++){
numf += num.charAt(i);
}

primeiro = Integer.parseInt(num);
ultimo = Integer.parseInt(numf);

soma = primeiro + ultimo;

if(soma == palíndromo){

}else{

}[/code]

Espero ter ajudado.[/quote]

Boa noite, ByIvo!

Duas pequenas correções no seu for:[code]String numf="",num = JOptionPane.showInputDialog(“Informe o número”);
int primeiro,ultimo,soma;

for(int i=num.length()-1;i>=0;i–){ // Correções i >= 0 e i–
numf += num.charAt(i);
}

primeiro = Integer.parseInt(num);
ultimo = Integer.parseInt(numf);

soma = primeiro + ultimo;

if(soma == palíndromo){

}else{

}[/code][/quote]

Ops… Realmente… não estou acostumado a fazer for decrescente, e por querer fazer rápido as coisas, ocorrem esses probleminhas…
muito obrigado cara ;D

[quote=Vingdel][quote=ByIvo]bem… o inverso do número não seria seu palíndromo?
por exemplo: 12 = 21 são palíndromos( na minha visão).
Então qual número eu devo procurar com a soma?

primeiro, ele informa um número dentro de uma string ou vc converta ele pra uma string.
em sequência, use o charAt() dentro de um for pra captura o inverso da String, convertendo em seguida para número em outra variável.
Depois some ambas e procure o tal do palíndromo que eu não entendi.
Ex:

[code]
String numf="",num = JOptionPane.showInputDialog(“Informe o número”);
int primeiro,ultimo,soma;

for(int i=num.length()-1;i>0;i++){
numf += num.charAt(i);
}

primeiro = Integer.parseInt(num);
ultimo = Integer.parseInt(numf);

soma = primeiro + ultimo;

if(soma == palíndromo){

}else{

}[/code]

Espero ter ajudado.[/quote]

Boa noite, ByIvo!

Duas pequenas correções no seu for:[code]String numf="",num = JOptionPane.showInputDialog(“Informe o número”);
int primeiro,ultimo,soma;

for(int i=num.length()-1;i>=0;i–){ // Correções i >= 0 e i–
numf += num.charAt(i);
}

primeiro = Integer.parseInt(num);
ultimo = Integer.parseInt(numf);

soma = primeiro + ultimo;

if(soma == palíndromo){

}else{

}[/code][/quote]

String numf="",num = JOptionPane.showInputDialog(“Informe o número”);
int primeiro,ultimo,soma;

for(int i=num.length()-1;i>=0;i–){ // Correções i >= 0 e i–
numf += num.charAt(i);
}

primeiro = Integer.parseInt(num);
ultimo = Integer.parseInt(numf);

soma = primeiro + ultimo;

if(soma == palíndromo){

}else{

}
String numf="",num = JOptionPane.showInputDialog(“Informe o número”);
int primeiro,ultimo,soma;

for(int i=num.length()-1;i>=0;i–){ // Correções i >= 0 e i–
numf += num.charAt(i);
}

primeiro = Integer.parseInt(num);
ultimo = Integer.parseInt(numf);

soma = primeiro + ultimo;

if(soma == palíndromo){

}else{

}

Dsculpe se nao tiver colocado corretamente,a questao é o seguinte:
Há uma questão matemática interessante envolvendo números palíndromos, chamada
Conjectura Palíndroma. Tal conjectura diz que se escolhermos um número qualquer e somarmos
com esse número invertido e, então, sucessivamente, repetirmos esse processo para as somas
obtidas, obteremos um número palíndromo. Suponhamos que o número escolhido foi 68. Assim
68 + 86 = 154
154 + 451 = 605
605 + 506 =1111
no terceiro passo (soma) já obtemos um número palíndromo.

Boa noite, waldirene!

Você não conseguiu fazer nada? Gostaríamos de ver o que você já tem em mente e te ajudaremos a partir de onde você chegou.

Por favor, tente corrigir sua última postagem, se possível, apague os quote’s e deixe somente a sua explicação, afinal sua mensagem não é referente aos quote’s.

Aguardo uma postagem sua.

Abraço e até mais!

Ainda to na duvida ,mas obrigado a todos que me responderam,
Dsculpe se nao tiver colocado corretamente,a questao é o seguinte:
Há uma questão matemática interessante envolvendo números palíndromos, chamada
Conjectura Palíndroma. Tal conjectura diz que se escolhermos um número qualquer e somarmos
com esse número invertido e, então, sucessivamente, repetirmos esse processo para as somas
obtidas, obteremos um número palíndromo. Suponhamos que o número escolhido foi 68. Assim
68 + 86 = 154
154 + 451 = 605
605 + 506 =1111
no terceiro passo (soma) já obtemos um número palíndromo.como faço p inverter um numero?

Gostaria de ver o que você já programou… A sugestão dada pelo amigo ByIvo é meio caminho andado, aproveite as informações dadas por ele e nos mostre o que você conseguiu desenvolver.

Abraço!

Acho que resolvi essa questão. O Código é bruto, fiz ele em 15 minutos e na biblioteca da faculdade, tava presisando de distrair um pouquinho, tava chato ler :smiley:

Os results com o número 68 são:
Para o número 68 são necessários
3 loops, seu número Palíndromo Conjecto dele é: 1111

E com o 25:
Para o número 25 são necessários
1 loops, seu número Palíndromo Conjecto dele é: 77

E com o 54:
Para o número 54 são necessários
1 loops, seu número Palíndromo Conjecto dele é: 99

Só que nem tudo é perfeito, Quando o palíndromo conjecto é grande, ele não calcula até o final, acho que é por causa do tipo primitivo int que eu uso. Nunca usei outros tipos além desse,
pois sou novo em java, estou recém no primeiro ano de sistemas, então não pude fazer melhor. Agora é so otimizar e melhorar . :smiley:

package seachpalindromosconjectos;

import javax.swing.JOptionPane;

public class search {

    public static void main(String[] args) {
        String num = JOptionPane.showInputDialog("Informe o número"), numf = "";
        int primeiro, ultimo, soma, cont, somas = 0;
        boolean teste = false;
        System.out.println("Para o número "+num+" são necessários");
        do {
            somas++;
            cont = 0;
            numf = "";
            for (int i = num.length() - 1; i >= 0; i--) {
                numf += num.charAt(i);
            }
            primeiro = Integer.parseInt(num);
            ultimo = Integer.parseInt(numf);
            soma = primeiro + ultimo;
            num = soma + "";
            for (int i = num.length() - 1; i >= 0; i--) {
                if (num.charAt(i) == num.charAt(0)) {
                    cont++;
                }
            }
            if (cont++ == num.length()) {
                teste = true;
            } 

        } while (!teste);
        System.out.println(somas+" loops, seu número Palíndromo Conjecto dele é: " + num);

    }
}

Eu também havia feito e deixado guardado aqui, pois eu queria ver um esforço da waldirene.

Acho que ela não tinha a intenção de se esforçar. Segue o que fiz:[code]import javax.swing.JOptionPane;

public class ConjecturaPalindroma{
String numf, num;
int primeiro, segundo, soma;

public ConjecturaPalindroma(){
	num = JOptionPane.showInputDialog("Informe o número");
	metodo(num);
}

public void metodo(String numero){
	numf="";
	for(int i = numero.length() - 1; i >= 0; i--)
		numf += numero.charAt(i);
	primeiro = Integer.parseInt(numero);
	segundo = Integer.parseInt(numf);
	if(primeiro != segundo){
		soma = primeiro + segundo;		
		System.out.println(primeiro+" + "+segundo+" = "+soma);
		metodo(""+soma);
	}else
		System.out.println("Conjectura Palindroma: "+soma);
}
public static void main(String[] args){
	new ConjecturaPalindroma();
}

}[/code]Abraço!

[quote=Vingdel]Eu também havia feito e deixado guardado aqui, pois eu queria ver um esforço da waldirene.

Acho que ela não tinha a intenção de se esforçar. Segue o que fiz:[code]import javax.swing.JOptionPane;

public class ConjecturaPalindroma{
String numf, num;
int primeiro, segundo, soma;

public ConjecturaPalindroma(){
	num = JOptionPane.showInputDialog("Informe o número");
	metodo(num);
}

public void metodo(String numero){
	numf="";
	for(int i = numero.length() - 1; i >= 0; i--)
		numf += numero.charAt(i);
	primeiro = Integer.parseInt(numero);
	segundo = Integer.parseInt(numf);
	if(primeiro != segundo){
		soma = primeiro + segundo;		
		System.out.println(primeiro+" + "+segundo+" = "+soma);
		metodo(""+soma);
	}else
		System.out.println("Conjectura Palindroma: "+soma);
}
public static void main(String[] args){
	new ConjecturaPalindroma();
}

}[/code]Abraço![/quote]

Realmente, pelo que eu vi da ultima data da sua mensagem, ela nao tinha mesmo muita vontade…
Vingdel, achei muito legal sua solução, mais simples e menos confusa que a minha… :smiley:
show de bola cara =D

Confesso que não entendi aqueles métodos, porém mesmo assim deu de entender a sintaxe…
show de bola cara… parabéns ;D

Boa Note, ByIvo!

Que bom que tu gostou da minha solução. O que você pode não ter entendido foi a chamada recursiva ao método que nomeei como metodo (nada criativo).

É um recurso muito interessante e tem exemplos bem clássicos com algorítmos para Fibonacci e Fatorial.

Caso tenha interesse, leia um pouco nesse link.

Abraço e bons estudos!