Olá pessoal, sou iniciante e estou com um problema modularizarão e nao entendo a logica da questão e os programas que desenvolvi para resolver não funcionam como o esperado justamente por eu não fazer ideia de como desenvolve-lo para que cumpra os testes pedidos.
a) Implemente um módulo que dados dois números inteiros positivos retorne a quantidade de dígitos comuns nas mesmas posições.
b) Elabore um programa que leia N pares de valores inteiros positivos, sendo N introduzido pelo utilizador e validado. Após a leitura dos N pares de valores o programa deve apresentar o par que tiver mais dígitos comuns nas mesmas posições. No caso de haver mais do que um par com a mesma quantidade de dígitos em comum, deve ser apresentado o último par encontrado.
O resultado deve conter apenas o par em causa no formato “numero1/numero2”.
No caso de não haver nenhum par de números que tenha algarismos em comum deve ser apresentada a mensagem: “sem resultados”.
Exemplo:
Entrada
3
12345
345
13579
12529
123
4567895
saida
13579/12529
E o que você já fez, cidadão?
mas da erro
int par1;
int par2;
int maiorDigitosComuns = 0;
int maiorPar1 = 0;
int maiorPar2 = 0;
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Introduza N:");
n = scanner.nextInt();
} while(n <= 0);
} while (n <= 0);
for(int i = 0; i < n; i++) {
for (int i = 0; i < n; i++) {
System.out.println("Introduza um novo par de números:");
System.out.println("----------");
System.out.println("Par 1:");
par1 = scanner.nextInt();
System.out.println("Par 2:");
par2 = scanner.nextInt();
int quantidadeDeDigComuns = quantidadeDigitosComunsNaMesmaPosicao(par1, par2);
if(quantidadeDeDigComuns > maiorDigitosComuns) {
//CONTINUAR MAIS TARDE
if (quantidadeDigitosComunsNaMesmaPosicao(par1, par2) > maiorDigitosComuns) {
maiorDigitosComuns = quantidadeDigitosComunsNaMesmaPosicao(par1, par2);
maiorPar1 = par1;
maiorPar2 = par2;
}
}
int a = quantidadeDigitosComunsNaMesmaPosicao(11112,11222);
System.out.println(a);
System.out.println("O par que têm mais digitos em comum é o " + maiorPar1 + " e " + maiorPar2 + ". Têm " + maiorDigitosComuns + " digitos em comum.");
}
@@ -50,21 +48,21 @@ public static int quantidadeDigitosComunsNaMesmaPosicao(int num1, int num2) {
String num2String;
int resultado = 0;
if(num1 < 0 || num2 < 0) {
if (num1 < 0 || num2 < 0) {
System.out.println("Números introduzidos incorrectos.");
} else {
num1String = Integer.toString(num1);
num2String = Integer.toString(num2);
if(num2String.length() > num1String.length()) {
if (num2String.length() > num1String.length()) {
String temp = num1String;
num1String = num2String;
num2String = temp;
}
for(int i = 0; i < num2String.length(); i++) {
if(num1String.charAt(i) == num2String.charAt(i)) {
for (int i = 0; i < num2String.length(); i++) {
if (num1String.charAt(i) == num2String.charAt(i)) {
resultado++;
}
}
Você pode usar o operador módulo para separar os algarismo ou converter em String
, separar em substring
e depois reconverter em int
.
Para tu ter um norte:
import java.util.Scanner;
public class Verificador {
private int numeroAlgarismoV1 = 0;
private int numeroAlgarismoV2 = 0;
private int contadorV1 = 0;
private int contadorV2 = 0;
private int[] valor1;
private int[] valor2;
private void separador(int v1, int v2){
int vlr1 = v1;
int vlr2 = v2;
/*
* Conta o número de algarismos
*/
while(vlr1 > 0){
numeroAlgarismoV1++;
vlr1 /= 10;
}
while(vlr2 > 0){
numeroAlgarismoV2++;
vlr2 /= 10;
}
valor1 = new int[numeroAlgarismoV1];
valor2 = new int[numeroAlgarismoV2];
contadorV1 = numeroAlgarismoV1 - 1;
contadorV2 = numeroAlgarismoV2 - 1;
/*
* Preenche os vetores
*/
while(v1 > 0){
valor1[contadorV1--] = v1 % 10;
v1 /= 10;
}
while(v2 > 0){
valor2[contadorV2--] = v2 % 10;
v2 /= 10;
}
}
private int verificarCorrespondencia(){
int contagem = 0;
if(numeroAlgarismoV1 > numeroAlgarismoV2){
for(int i = 0; i < numeroAlgarismoV2; i++){
if(valor1[i] == valor2[i])
contagem++;
}
}else if(numeroAlgarismoV1 < numeroAlgarismoV2){
for(int i = 0; i < numeroAlgarismoV1; i++){
if(valor1[i] == valor2[i])
contagem++;
}
}else{
for(int i = 0; i < numeroAlgarismoV1; i++){
if(valor1[i] == valor2[i])
contagem++;
}
}
return contagem;
}
public static void main(String[] args){
int valorInformado1;
int valorInformado2;
Scanner leitor = new Scanner(System.in);
Verificador verificador = new Verificador();
System.out.print("Valor 1: ");
valorInformado1 = leitor.nextInt();
System.out.print("Valor 2: ");
valorInformado2 = leitor.nextInt();
verificador.separador(valorInformado1, valorInformado2);
System.out.println("");
for(int i = 0; i < verificador.numeroAlgarismoV1; i++){
System.out.print(verificador.valor1[i] + " ");
}
System.out.println("\n");
for(int i = 0; i < verificador.numeroAlgarismoV2; i++){
System.out.print(verificador.valor2[i] + " ");
}
System.out.println("\n");
System.out.println("Correspondências: " + verificador.verificarCorrespondencia());
leitor.close();
}
}
Rodando…

Aí você implementa o que está faltando.