GARANTIR DESCONTO

Fórum Ajuda com lógica de programação!!! #571472

23/11/2016

0

Intercalação é o processo utilizado para construir uma tabela ordenada, de tmanho n+m, a
partir de duas tabelas já ordenadas de tamanhos n e m. Por exemplo, a partir das tabelas:

A = |1|3|6|7|
e
B = |2|4|5|
construímos a tabela
C = |1|2|3|4|5|6|7|

Fazer um programa em java que:
a) leia NA. número de elementos do conjunto A(NA <= 100);
b) leia, em seguida, os elementos do conjunto A;
c) leia NB. número de elementos do conjunto B(NB <= 100);
d) leia, em seguida, os elementos do conjunto B;
e) crie e imprima um conjunto C, ordenado, de tamanho NA+NB, a partir de dos conjuntos originais A e B.












Aqui está meu código,

import java.util.Scanner;

public class E10 {

public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner reader = new Scanner(System.in);

int i;

System.out.println("Digite o *TAMANHO* do vetor A");
int NA = reader.nextInt();

int[] A = new int[NA];

for(i = 0; i < A.length; i++){
System.out.println("Digite os **ELEMENTOS** do vetor A");
A[i] = reader.nextInt();
}

System.out.println("Digite o *TAMANHO* do vetor B");
int NB = reader.nextInt();

int[] B = new int[NB];

for(i = 0; i < NB; i++){
System.out.println("Digite os **ELEMENTOS** do vetor B");
B[i] = reader.nextInt();
}

int TAM = NA+NB;

int[] C = new int[TAM];

for(i = 0; i < NA; i++){ //armazenando os valores DO vetor A
C[i] = A[i];
}

for(i = 0; i < NB; i++){ //armazenando os valores DO vetor B
C[i] = B[i];
}

int aux = 0; //Inicialização da variável aux

for(i = 0; i < C.length; i++){ //Ordenação
for(int j = 0; j < C.length; j++){
if(C[i] < C[j]){
aux = C[i];
C[i] = C[j];
C[j] = aux;
}
}
}

for(i = 0; i < C.length; i++){
System.out.println("Os elementos C: " + C[i]);
}
}
}

O problema que estou tendo é que quando entra no for de tamanho NB, ele substitui os valores já armazenados antes.
Alguém pode me ajudar a resolver isso? :D
Alexandre Oliveira

Alexandre Oliveira

Responder

Posts

24/11/2016

Marcio Souza

Se problema está no código abaixo.
for(i = 0; i < NB; i++){ //armazenando os valores DO vetor B
    C[i] = B[i];
}

Você já adicionou os valores de A no array C.
Quando faz o for para B, está subscrevendo as primeiras posições do array C com os valores de B. Isto porque, você inicia o for na posição zero e deveria inicializar na posição seguinte aos elementos de A.
Responder

Gostei + 0

24/11/2016

Alexandre Oliveira

Correto!

Mas o problema é que, não consigo encontrar um jeito de inicializar na seguinte posição dos elementos de A.
Responder

Gostei + 0

15/12/2016

Marcio Souza

Você tem o array A, então tem o tamanho de A. Quando adiciona A em C significa que adicionou em C a quantidade de posições do tamanho de A. Sendo assim, os próximos elementos são adicionados depois do tamanho de A. Ao invés de iniciar o for em 0, inicie na próxima posição que vem depois do tamanho de A (A+1).
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar