Java - Problema al modificar e imprimir vecotres

 
Vista:

Problema al modificar e imprimir vecotres

Publicado por Cat (1 intervención) el 16/11/2018 04:36:59
Buenas, quisiera saber si me pueden ayudar con lo siguiente.
Tengo problemas a la hora de imprimir unos vectores, el problema es que debo llenar 2 vectores de 5 posiciones cada uno, luego recorrer esos vectores y si hay valores repetidos intercambiar esos valores repetidos por -1, pero conservando uno de ellos pero almacenando ese vector modificado en un vector auxiliar ya que el vector original no se puede tocar.

Ejemplo: vec={1, 3, 5, 3, 6} aux={1, 3, 5, -1, 5}

El problema es que el codigo me esta imprimiendo esto
Suponiendo que lleno el vector con estos valores : vec={1, 3, 5, 3, 6}
imprime: vec={1, 3, 5, -1, 5} aux={1, 3, 5, -1, 5}
pero no se porque ya que el vector vec nunca lo modifico

este es el codigo:

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.*;
 
public class revisar {
 
static Scanner sc = new Scanner(System.in);
   static int d1=0, d2=0;
   static int vec1[]=new int[5];
   static int vec2[]=new int[5];
   static int aux1[]=new int[5];
   static int aux2[]=new int[5];
 
   public static void main(String[] args) {
        llenar();
        cdimensiones();
        mostrar();
    }
    public static void llenar(){
    	int i;
    	for(i=0; i<=4; i++){
    		System.out.println("Ingrese el valor "+(i+1)+" del vector 1");
    		vec1[i]=sc.nextInt();
    	}
 
    	for(i=0; i<=4; i++){
    		System.out.println("Ingrese el valor "+(i+1)+" del vector 2");
    		vec2[i]=sc.nextInt();
    	}
    	for(i=0; i<=4; i++){
    		aux1[i]=vec1[i];
    	}
    	for(i=0; i<=4; i++){
    		aux2[i]=vec2[i];
    	}
    }
    public static void cdimensiones(){
    	int i, j, sum=0, k;
    	aux1=revrep(vec1);
    	aux2=revrep(vec2);
    }
    public static int[] revrep(int array[]){
    	int i, j;
    	for(i=0; i<=3; i++){
    		if(array[i]!=-1){
    			for(j=(i+1); j<=4; j++){
    				if(array[i]==array[j]){
    					array[j]=-1;
    				}
    			}
    		}
    	}
 
    	return array;
    }
    public static void mostrar(){
    	int i;
    	System.out.print("\n");
    	System.out.println("Auxiliar 1 es: ");
        for(i=0; i<=4; i++){
    		System.out.print(aux1[i]+ " ");
    	}
    	System.out.print("\n");
 
    	System.out.println("Vector 1 es: ");
        for(i=0; i<=4; i++){
    		System.out.print(vec1[i]+ " ");
    	}
    	System.out.print("\n");
 
    	System.out.println("Auxiliar 2 es: ");
        for(i=0; i<=4; i++){
    		System.out.print(aux2[i]+ " ");
    	}
    	System.out.print("\n");
 
    	System.out.println("Vector 2 es: ");
        for(i=0; i<=4; i++){
    		System.out.print(vec2[i]+ " ");
    	}
    }
}


Espero que alguien me pueda ayudar por favor.
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 al modificar e imprimir vecotres

Publicado por Tom (1831 intervenciones) el 16/11/2018 09:01:15
A ver, obviamente, en revrep() estás modificando el array que recibes. Pásale los aux.
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

Problema al modificar e imprimir vecotres

Publicado por kingk (108 intervenciones) el 17/11/2018 02:25:59
Hola, como te dijeron en el metodo revrep modificas el vector, puedes pasarle como parametro los vectores aux:
1
2
3
4
5
public static void cdimensiones(){
    int i, j, sum=0, k;
    aux1=revrep(aux1);
    aux2=revrep(aux2);
}

Tambien puedes modificar el metodo revrep asi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static int[] revrep(int array[]){
    int i, j;
    int a[]=array;
    for(i=0; i<=3; i++){
        if(array[i]!=-1){
            for(j=(i+1); j<=4; j++){
                if(a[i]==a[j]){
                    a[j]=-1;
                }
            }
        }
    }
 
    return a;;
}
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