Boa tarde pessoal!
Estou resolvendo um exercício de programação onde ao receber dois números, preciso dizer qual deles é segmento do outro, e se nenhum for segmento do outro, informar também…
Por exemplo: 123680 e 680 = B é segmento de A
378 e 1237804 = A é segmento de B
11 e 1234 = não existe segmento
OBSERVAÇÃO INICIAL: Estou no primeiro semestre e não posso usar nenhum método pronto. Apenas charAt, length e conversões de tipos. E não estou programando OO, ainda é procedural, portanto a solução vai ser bem braçal e por isso esse espaguete de código…
Pois então, primeiramente descobri qual é o maior número, converti ambos para String, para poder iterar pelos elementos da mesma. E cheguei ao código abaixo:
//Se o segundo numero for maior que o primeiro.
if (segMaiorQPrim) {
contadorCharEncontrado = numeroA.length()-1;
for (int j = 0;j < numeroA.length()-1;j++) {
encontrouNumero = false;
//while (!encontrouNumero) {
for (int k = 0;k < numeroB.length()-1;k++) {
if (numeroB.charAt(k) == numeroA.charAt(j) && !encontrouNumero) {
encontrouNumero = true;
contadorCharEncontrado--;
}
}
//}
}
if (contadorCharEncontrado == 0) {
diga ("a é segmento de b");
} else {
diga("um não é segmento do outro");
}
//Se o primeiro número for maior que o segundo.
} else {
contadorCharEncontrado = numeroB.length()-1;
for (int l = 0;l < numeroB.length()-1;l++) {
encontrouNumero = false;
while (!encontrouNumero) {
for (int m = 0;m < numeroA.length()-1;m++) {
if (numeroA.charAt(m) == numeroB.charAt(l)) {
encontrouNumero = true;
contadorCharEncontrado--;
}
}
}
}
if (contadorCharEncontrado == 0) {
diga("b é segmento de a");
} else {
diga("um não é segmento do outro");
}
Com os números 11 e 1234 o resultado deveria ser “um não é segmento do outro”, porém não é isso que acontece, o programa sempre diz que “a é segmento de b”. Já fiz o teste de mesa e ainda assim não consegui resolver esse problema.
Alguém tem alguma dica pra descobrir se determinado número se encontra dentro de outro?
Obrigado!