Como puedo almacenar números en una pila y que luego los muestre
Publicado por Joker (27 intervenciones) el 19/04/2020 21:00:26
Hola,
Como puedo almacenar números en una pila y que luego los muestre? Es decir, tengo que hacer que el usuario vaya introduciendo número y después clasificarlos en nº de tres dígitos, nº primos y resto de números (que no se han ni primos ni de tres dígitos). No consigo que se almacenen los números. Agradecería vuestra ayuda.
interfaz para una pila de datos
Clase de la pila dinamica
Clase para los numeros
Como puedo almacenar números en una pila y que luego los muestre? Es decir, tengo que hacer que el usuario vaya introduciendo número y después clasificarlos en nº de tres dígitos, nº primos y resto de números (que no se han ni primos ni de tres dígitos). No consigo que se almacenen los números. Agradecería vuestra ayuda.
interfaz para una pila de datos
1
2
3
4
5
6
7
public interface IPila {
public boolean esPilaLlena();
public boolean esPilaVacia();
public void empilar(int elem);
public int desempilar();
public int verCima();
}
Clase de la pila dinamica
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
public class PilaD implements IPila {
class Nodo {
int dato;
Nodo sig;
}
private Nodo raiz;
public PilaD() {
raiz = null;
}
public void empilar(int valor) {
Nodo nuevo = new Nodo();
nuevo.dato = valor;
if (raiz == null){ //Pila vacia
nuevo.sig = null;
raiz = nuevo;
} else {
nuevo.sig = raiz;
raiz = nuevo;
}
}
public int desempilar() {
if (raiz != null) {
int informacion = raiz.dato;
raiz = raiz.sig;
return informacion;
} else {
return Integer.MAX_VALUE;
}
}
public int verCima() {
if (raiz != null) {
return raiz.dato;
} else {
return Integer.MAX_VALUE;
}
}
public boolean esPilaVacia() {
if(raiz == null)
return true;
else
return false;
}
public boolean esPilaLlena() {
return false;
}
}
Clase para los numeros
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
public class Numeros {
//Función que saca si es un número primo o no
public static boolean numPrimo(int num) {
boolean esPrimo=true;
int contadorPri=2;
while((esPrimo) && (contadorPri!=num)) {
if (num%contadorPri==0)
esPrimo=false;
contadorPri++;
}
return esPrimo;
}
//PROGRAMA PRINCIPAL
public static void main(String[] args) {
//Pilas segun la condición
PilaD pilaTresDigitos = new PilaD();
PilaD pilaPrimos = new PilaD();
PilaD pilaDemasNumeros = new PilaD();
Scanner sc = new Scanner(System.in);
int num=0, contador=0, elemento, p=0;
String datosTres = null;
boolean res;
//Introducir los números hasta que se introduzca 0
do {
System.out.println("Introduce una número y si quieres acabar introduce 0");
num=sc.nextInt();
elemento=num;
} while(num!=0);
//Saber si tiene tres digitos
while (elemento>0) {
elemento=elemento/10;
contador++;
}
//Dependiendo de la condición que cumplen iran a una pila u otra
if (contador==3)
pilaTresDigitos.empilar(num);
else
//Dependiendo del resultado de la función ira a una una pila u otra
if (numPrimo(num)==true) {
pilaPrimos.empilar(num);
} else
pilaDemasNumeros.empilar(num);
//Visualizar el resultado
/*System.out.println("Números de tres digitos --> " + pilaTresDigitos.desempilar());
System.out.println("Números primos --> " + pilaTresDigitos.verCima());
System.out.println("El resto de los números --> " + pilaTresDigitos.verCima());*/
//Saco los valores de la pila para asi poder visualizar los números
while(!pilaTresDigitos.esPilaVacia()) {
System.out.println(pilaTresDigitos.desempilar());
}
}
}
Valora esta pregunta


0