Java - Vector sin sepetir datos

 
Vista:

Vector sin sepetir datos

Publicado por Juan Cardona (4 intervenciones) el 11/11/2020 03:23:00
Hola, buenas noches.

Soy nuevo, estoy buscando ayuda sobre como resolver el siguiente ejercicio.

/* Pedir por teclado el tamaño de un arreglo de números y pedir los valores enteros negativos con los que
se rellena. Los valores no se pueden repetir. Mostrar el arreglo con los valores al final
*/
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
Imágen de perfil de Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Vector sin sepetir datos

Publicado por Rodrigo (623 intervenciones) el 11/11/2020 05:21:51
Lees y justo antes de agregar, iteras sobre los valores ya ingresados en el arreglo, y si ves que el valor a ingresar ya esta, lo ignoras, sino lo agregas.
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

Vector sin sepetir datos

Publicado por Juan cardona (4 intervenciones) el 11/11/2020 05:27:53
Muchas gracias por tu ayuda.

Que pena te molesto.
¿Tienes algún ejemplo? Es que he intentado muchas formas pero no me ha dado :( ... ya estoy frustrado
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Vector sin sepetir datos

Publicado por Rodrigo (623 intervenciones) el 11/11/2020 16:41:41
Te propongo una alternativa, si es que quieres aprender.

Haz un programa que pida un tamaño, cree un arreglo de ese tamaño y en un ciclo de ese tamano ingrese valores a ese arreglo.
Agrega un ciclo al final para mostrar los valores del arreglo.

Ese programa, puedes hacerlo? puedes mostrarlo? Usa el boton </> Codigo para copiar el programa. Se ve mejor asi.

Despues de tener ese programa y mostrarlo, hacemos el resto.

Ahora, siempre hay por aqui otros que no pueden resistirse a "ayudar" resolviendo el problema completo.
Yo no soy de esa escuela.

Tu decides. O lo intentas, o esperas.
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

Vector sin sepetir datos

Publicado por Juan cardona (4 intervenciones) el 11/11/2020 16:59:12
Dale, ya me pongo a hacerlo para mostrarte y así poder aprender
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

Vector sin sepetir datos

Publicado por Juan Cardona (4 intervenciones) el 11/11/2020 19:11:02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import Generales.clsGenerales;
import Generales.clsVectorGral;
public class vRepetidos
{
    static clsGenerales oG = new clsGenerales ( );
    static clsVectorGral oV = new clsVectorGral ( );
    public static void main(String[] args)
    {
    	int n, i;
    	int R = 0;
    	int [] vRepe;
    	n = oG.leerEnteroPosMy0 ("Ingrese la cantidad a evaluar");
    	vRepe = new int [n];
 
    		for (i=0; i< n; i++)
    			vRepe[i] = oG.leerEnteroNeg ("Ingrese un dato");
    			oV.mostrarEnteros (vRepe, " Datos ingresados");
    }
 
}
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 Rodrigo
Val: 2.041
Plata
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Vector sin sepetir datos

Publicado por Rodrigo (623 intervenciones) el 11/11/2020 19:55:31
No esperaba que contaras con funciones ya listas para leer e imprimir. Tal vez ya hay alguna que elimina repetidos y solo tienes que usarla?

Bueno, si no es asi, algunas sugerencias:

Al escribir un for, mejor siempre usar { } aunque sea solo 1 instruccion, como es tu caso.
Esto permite incluir otras instrucciones antes o despues de esa sola instruccion, aun dentro del ciclo. Ademas, muchos errores se cometen por no ser consistentes en el uso de las llaves y pensar que java actua como otros lenguajes en que solo la indentacion indica ser parte del ciclo.
Entonces: Encierra la asignacion entre un par de { }

Por otro lado, la instruccion justo despues del ciclo, la que imprime los valores del arreglo, no la pongas indentada como si fuera parte del ciclo, porque no es. Ponla mas abajo y sin indentar. Mas claro asi.

Ahora justo antes de la asignacion que haces en el ciclo tienes que lograr saber si el numero a leer se repite o no antes de asignarlo, asi que no puedes llegar y asignar, algunas sugerencias para poder lograr esto:
- Define una variable y a esta asignale el valor, y luego asigna esta variable al vector, 2 instrucciones separadas.
- La idea es hacer que la lectura del numero sea un ciclo, y que este termine solo cuando el numero no este repetido.

El ciclo for que tienes ahora va a quedar algo asi:

1
2
3
4
5
6
for( .... ) {
  ciclo para leer numero hasta que no se repita
  asignar numero a la posicion i-esima
}
 
escribir el arreglo.

La instruccion do-while parece conveniente para resolver la lectura y calculo de si es repetido.

Primera instruccion, leer el valor
Siguientes instrucciones saber si el numero esta repetido.

Un truco usual para saber algo de un conjunto es definir una variable antes de hacer una visita por todo el contenido y asignarla con el valor que te conviene mientras lo visitas.
Te conviene tener una variable booleana para saber si el numero esta repetido y que esta parta en false.

Definela antes del ciclo. El ciclo la cambia y se repite si el numero esta repetido.

1
2
3
4
5
6
7
8
9
10
11
12
for( ... ) {
  definir variable booleana repetido y asignarle valor inicial false
  do {
    numero = leer numero
    // aqui poner la logica para saber si el numero esta repetido,
    // hay que cambiar la variable repetido de acuerdo a esto
  } while(repetido);
 
  asignar la variable numero
}
 
escribir arrreglo

Falta aun agregar la logica, para saber si el valor esta repetido, aqui va:
Visita el arreglo desde 0 hasta i-1 (incluido) y compara los valores contra numero, si alguno es igual cambias la variable repetido a true (y sales del ciclo, o bien iteras hasta el final, da igual).

Modifica tu codigo de acuerdo a estas sugerencias.
Si logras terminar y funciona, o no, vuelves y cuentas como te va.
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