Java - Problema de arreglos

   
Vista:

Problema de arreglos

Publicado por Heavy (4 intervenciones) el 28/11/2014 04:55:56
El siguiente ejercicio debo pasarlo a lenguaje Java he intentado pero siempre tengo un error. Básicamente debo traducir el algoritmo a lenguaje Java.

De antemano gracias por la ayuda.

Ejercicio resuelto No. 56

Elaborar un algoritmo que forme dos vectores A y B de N y M elementos
respectivamente y forme un nuevo arreglo C, con loselementos que correspondan a la
unión de A y B. La unión de A y B son los elementosdel vector A que no están en el
vector B. Los vectores no tienen elementos repetidos. A y B tienen máximo 20 elementos.

Análisis

Datos de entrada
• El tamaño del arreglo A
• El tamaño del arreglo B
• Los elementos del vector A
• Los elementos del vector B

Datos de salida
• Los elementos del vector C

Proceso

Como se conoce la cantidad de elementos de cada unode los dos vectores, para su lectura
se utiliza un esquema cuantitativo. Luego se pasan los elementos del vector A al nuevo
vector C y se hace un ciclo externo que recorra loselementos del vector B y uno interno
que recorra los elementos del vector A, buscando cada elemento de B en A, si un
elemento de B no se encuentra en A entonces se pasaal vector C.

Definición de variables.

N: Número de elementos del vector A.
M: Número de elementos del vector B.
A, B y C: Nombre de los tres vectores.
NEC: Número de elementos del vector C.
I, K: Variables de control de ciclos.

Algoritmo

INICIO
LEA: N, M
PARA I = 1, N, 1 HAGA
LEA: A[I]
FIN_PARA
PARA K = 1, M, 1 HAGA
LEA: B[K]
FIN_PARA
PARA I = 1, N HAGA
C[I] = A[I]
FIN_PARA
NEC = N
PARA K = 1, M, 1 HAGA
I = 1
MIENTRAS (I <= N) ∧(B[K] <> A[I]) HAGA
I = I + 1
FIN_MIENTRAS SI I > N ENTONCES NEC = NEC + 1
C[NEC] = B[K]
FIN_SI FIN_PARA
PARA I = 1, NEC, 1 HAGA
ESCRIBA: C[I]
FIN_PARA
FIN_INICIO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.Scanner;
 
public class ejercicioresuelto56v2 {
	public static void main(String[]args){
 
	int n, m, nec, i, k;
 
	Scanner leer = new Scanner(System.in);
 
	System.out.print("Número de elementos del vector A: ");
	n=leer.nextInt();
	System.out.print("Número de elementos del vector B: ");
	m=leer.nextInt();
 
 
 
	int a[] = new int [n];
 
	for(i=0;i<n;i++){
		System.out.print("Elemento del vector A: ");
		a[i]=leer.nextInt();
	}
 
	int b[] = new int [m];
 
	for(k=0;k<m;k++){
		System.out.print("Elemento del vector B: ");
		b[k]=leer.nextInt();
	}
 
	int c[] = new int [(n+m)-1];
 
	for(i=0;i<n;i++){
		c[i]=a[i];
	}
 
	nec=n-1;
 
	for(k=0;k<m;k++){
		i=0;
		while((i<n) && (b[k]!=a[i])){
			i=i+1;
 
		}
		if(i>n){
			nec=nec+1;
			c[nec]=b[k];
		}
	}
 
	for(i=0;i<nec;i++){
		System.out.println("Valor del vector C["+i+"]: "+c[i]);
	}
 
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema de arreglos

Publicado por Andrés (231 intervenciones) el 28/11/2014 14:40:51
Revisa el thread: Java - Ayuda - Operación de conjuntos con Arreglos. es cas ilo mismo, solo que se soluciona con arraylist. O es absolutamente necesario que sea con arrays?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de julio

Problema de arreglos

Publicado por julio (30 intervenciones) el 28/11/2014 19:08:47
hola prueba si este codigo te sirve...


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import java.util.Scanner;
 
public class Arreglo {
 
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
 
		int N =0;//numero de elementos del arreglo A
		int M =0;//numero de elementos del arreglo B
		int A[];
		int B[];
		int C[];
 
		Scanner in = new Scanner(System.in);
 
		System.out.println("Entre el tamanho del arreglo A");
		N = in.nextInt();
		A = new int[N];
		System.out.println("Entre el tamanho del arreglo B");
		M = in.nextInt();
		B = new int[M];
 
		for(int i=0; i <N; i++){
			System.out.println("Elemento del vector A");
			A[i] =in.nextInt();
		}
 
		for(int k=0; k <M; k++){
			System.out.println("Elemento del vector B");
			B[k] =in.nextInt();
		}
 
		//para buscar el tamanho del arreglo C
		boolean existe1 = false;// existo o no existe
		int count1=0;
		for(int j=0; j <A.length;  j++){
			for(int z=0; z< B.length; z++){
				if(A[j]==B[z]){
					existe1=true;
				}
			}
			if(existe1==false){
				count1++;
			}
			existe1=false;
		}
 
		//buscar cuales son los elementos de A que aparecen en B
	    C = new int[M+count1];
		boolean existe = false;// existo o no existe
		int count=0;
		for(int j=0; j <A.length;  j++){
			for(int z=0; z< B.length; z++){
				if(A[j]==B[z]){
					existe=true;
				}
			}
			if(existe==false){//aqui insertos en C los elementos de A que no aparecen B
				C[count]=A[j];
				count++;
			}
			existe=false;
		}
 
		//con este for termino de unir los elementos del vector B con los de A
		for(int z=0; z< B.length; z++){
			C[count]=B[z];
			count++;
		}
 
		for(int x=0; x <C.length; x++){
			System.out.println(C[x]);
		}
 
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Isaac Daniel

Problema de arreglos

Publicado por Isaac Daniel (12 intervenciones) el 03/12/2014 06:19:21
Como el compañero Julio te dejo el código que me implemente con el avance que tenias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import java.util.Arrays;
import java.util.Scanner;
 
public class UnionVectores {
    public static void main(String[]args){
        int n, m, i, k, dif;
		Scanner leer = new Scanner(System.in);
		int[] c;
 
 
		System.out.print("Número de elementos del vector A: ");
		n=leer.nextInt();
		System.out.print("Número de elementos del vector B: ");
		m=leer.nextInt();
 
		int a[] = new int [n];
		for(i=0;i<n;i++){
			System.out.print("Elemento del vector A: ["+i+"]");
			a[i]=leer.nextInt();
		}
 
 
		int b[] = new int [m];
		for(k=0;k<m;k++){
			System.out.print("Elemento del vector B: ["+k+"]");
			b[k]=leer.nextInt();
		}
 
		//Con esto siempre vamos a copiar en C el vector mas grande.
		//if(n>m){
			int aux = 0;
			dif = 0;
			for (int d=0; d<m; d++){
				aux = b[d];
				if(!duplicado(aux, a)){
					dif++;
				}
	 		}
			System.out.println("El tamaño del array C sera "+ (dif+n));
 
			 c = new int [dif + n];
 
                         System.arraycopy(a, 0, c, 0, a.length);
 
                         aux=0;
                         int g = 0;
                         for(i = 0; i < b.length; i++){
                             aux = b[i];
                             if(!duplicado(aux, a)){
                                 c[a.length+g] = aux;
                                 g++;
                             }
                         }
 
                         for (int j=0; j < c.length; j++) {
                             System.out.println("C["+j+"]: "+c[j]);
                         }
    }
 
    public static boolean duplicado(int a, int array[]){
	int index;
 
	Arrays.sort(array);
        index=Arrays.binarySearch(array, a);
	if(index < 0){
            //Si NO se encuentra
            return false;
	}else if (index >= 0){
            return true;
	}
        return false;
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar