Operações de Somar, Subtrair e multiplicar num array

3 respostas
G

Preciso de ajuda para solucionar este caso.

A bronca é a seguinte;

Preencho dois arrays com número inteiros. Exemplo : Array1: 2345 e array2: 215. Vejam que existe diferença entre dígitos. Preciso retornar a resposta desta operações.

2345 - Array1
0215 - Array2

2560 - Soma

Não pode esquecer se a soma dos dígitos for maior que 9 devemos pegar a parte inteiro e a parte decimal. Deixo a decimal e elevo inteira.

Boa SOrte!!!

3 Respostas

S

Ola,

Lição de casa?!? :lol:

Porque nao converte o array para string e depois para um tipo numérico e faz a operação?!?

Algo assim:

function long arr2Number(int[] arr) {
        int i;
        StringBuffer str = new StringBuffer(arr.length);
        for(i=0;i<arr.length;i++) {
                str.append(String.valueOf(arr[i]));
        }
        return Long.valueOf(str.toString()).longValue();
}

long numero1 = arr2Number(array1);
long numero2 = arr2Number(array2);

long result = numero1 + numero2;

Se for array de caracteres fica mais facil com o método valueOf(char[] data) do objeto String.

R

Da para fazer uma bela gambiarra:

int array1[] = new int[] {2, 3, 4, 5};
int array2[] = new int[] {2, 1, 5};

String valor1 = "";
for (int i = 0; i < array1.length; i++) {
    valor1 += array1[i];
}

String valor2 = "";
for (int i = 0; i < array2.length; i++) {
    valor2 += array2[i];
}

int totalSoma = Integer.parseInt(valor1) + Integer.parseInt(valor2);

Rafael

B

E se você realmente quiser fazer do jeito braçal de como uma pessoa faz uma soma na mão, a lógica fica mais ou menos assim (nem estou a fim de escrever o código):

  • Deixar as duas arrays do mesmo tamanho, criando uma nova array do tamanho da array maior e utilizando o método System.arraycopy para copiar o conteúdo da array menor nessa nova array nas posições determinadas
  • Ir fazendo a soma do final da array para o começo, e para cada posição verificar se o número é maio do que 9, e sendo fazer o número/10 pra pegar a parte decimal e número%10 pra pegar o resto
  • Aí guarda o resto em uma array de resultado e a parte decimal em alguma variável que será utilizada na próxima soma (provavelmente vai ter que colocar ela como explicitamente zero quando for < 10)

Bom, acho que isso funciona… Mas só testanto para realmente ver os detalhes.

Criado 21 de março de 2003
Ultima resposta 21 de mar. de 2003
Respostas 3
Participantes 4