Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Reijs Manas en 18 de Octubre 2021, 03:22

Título: Java programa listas doblemente enlazadas o circulares o simplemente enlazadas
Publicado por: Reijs Manas en 18 de Octubre 2021, 03:22
Hola, me gustaría saber qué le hace falta a mi algoritmo de acuerdo con el enunciado

Ejercicio

Crear un programa utilizando listas doblemente enlazadas o circulares o simplemente enlazadas que permita crear objetos (Nodos) del tipo Televisor (de los televisores se conoce: código, marca, pulgadas) y del tipo PC (de los Pc se conoce: código, marca, procesador, memoria ram y disco duro). EL programa presentara un menú que me permita crear e insertar cualquiera de los dos tipos de objetos, también permitirá listarlos según el tipo de objeto.

CLASS PRINCIPAL
Código: [Seleccionar]

import java.util.Scanner;

public class ListaCirular {

    public static void main(String[] args) {

        int ref;
        String marca;
        int pul;
        String opc = null;
        Scanner lea = new Scanner(System.in);
        ListaC listac = new ListaC();
        do {

            System.out.print("Ingresa la referencia del TV: ");
            ref = lea.nextInt();
            System.out.print("Ingresa la marca del TV: ");
            marca = lea.next();
            System.out.print("Ingresa las Pulgadas del TV: ");
            pul = lea.nextInt();

            Televisor tv = new Televisor(ref, marca, pul);
            System.out.println(listac.insertarNodo(tv));

            System.out.print("¿Desea continuar insertando nodos? Si - No: ");
            opc = lea.next();

        }while(!opc.equalsIgnoreCase("no"));
       
        System.out.println("");
        System.out.println("\t\t\tListado de Televisores");
        System.out.println("");
        listac.ImprimirDatos();

    }

}

NODO
Código: [Seleccionar]
public class Nodo {

   
    Televisor dato;

   
    Nodo enlace;

    public Nodo(Televisor dato) {
        this.dato = dato;
        this.enlace = this;
    }

}

CLASS TELEVISORES
Código: [Seleccionar]
public class Televisor {

    private int referencia;
    private String marca;
    private int pulgadas;

    public Televisor() {
    }

    public Televisor(int ref, String marca, int pul) {
        this.referencia = ref;
        this.marca = marca;
        this.pulgadas = pul;
    }

    public int getReferencia() {
        return referencia;
    }

    public void setReferencia(int referencia) {
        this.referencia = referencia;
    }

    public String getMarca() {
        return marca;
    }

    public void setMarca(String marca) {
        this.marca = marca;
    }

    public int getPulgadas() {
        return pulgadas;
    }

    public void setPulgadas(int pulgadas) {
        this.pulgadas = pulgadas;
    }
   
    public String Mostrar(){
   
        return "(Ref: " + getReferencia() + " Marcar: " + getMarca() + " Pul: " + getPulgadas() + ")";
   
    }
   

}



CLASS LISTAC
Código: [Seleccionar]
public class ListaC {

   
    private Nodo lc;
    private int tamanio = 0;

    public ListaC() {
        lc = null;
    }

    public boolean ValidarLista() {

        return lc == null;

    }

    public String insertarNodo(Televisor tv) {

        Nodo nuevo = new Nodo(tv);
        if (!ValidarLista()) {
            nuevo.enlace = lc.enlace;
            lc.enlace = nuevo;
        }

        lc = nuevo;
        tamanio++;
        return "Nodo insertado";

    }
   
    public void ImprimirDatos(){
   
        Nodo aux;
        if(!ValidarLista()){
       
            aux = lc.enlace;
            do{
                System.out.print(aux.dato.Mostrar() + " --> \n");
                aux = aux.enlace;
            }while(aux != lc.enlace);
        }else{
            System.out.println("La lista no contiene información");
        }
   
    }

}
Título: Re: Que le hace falta a mi algoritmo de acuerdo con el enunciado?
Publicado por: Kabuto en 18 de Octubre 2021, 11:17
El tema de "nodos" lo tengo muy verde, así que daré por hecho que la lógica que has usado para crear las listas y los nodos es correcta.

Así que en principio lo único que te falta, es crear la clase PC
Citar
y del tipo PC (de los Pc se conoce: código, marca, procesador, memoria ram y disco duro)
y ofrecer en el menú la posibilidad de elegir entre registrar TV o PC, además de poder listarlos por separado.
Título: Re: Que le hace falta a mi algoritmo de acuerdo con el enunciado?
Publicado por: Reijs Manas en 18 de Octubre 2021, 17:00
Creo la clase pc y luego como ofrezco el menu?
ejemplo...!
Título: Re: Que le hace falta a mi algoritmo de acuerdo con el enunciado?
Publicado por: Kabuto en 18 de Octubre 2021, 23:38
Algo parecido a esto:


Código: [Seleccionar]
do {

            System.out.println("(T) - Ingresar TV);
            System.out.println("(P) - Ingresar PC);
            System.out.print("Elija opción: );
            opc = lea.next();

            if (opc.equals("T") {
                        System.out.print("Ingresa la referencia del TV: ");
                        ref = lea.nextInt();
                        System.out.print("Ingresa la marca del TV: ");
                        marca = lea.next();
                        System.out.print("Ingresa las Pulgadas del TV: ");
                        pul = lea.nextInt();

                        Televisor tv = new Televisor(ref, marca, pul);
                        System.out.println(listac.insertarNodo(tv));
            }
            else {
                        //Pedir datos de PC
                        //Insertar nodo tipo PC
            }

            System.out.print("¿Desea continuar insertando nodos? Si - No: ");
            opc = lea.next();

        }while(!opc.equalsIgnoreCase("no"));