3/14/2017

Ejercicio 44

Se desea registrar a los estudiantes de un colegio en una lista simple enlazada, se deben pedir su id, nombre y edad. Declare las clases necesarias para poder realizar las siguientes operaciones:

  • Añadir un nodo por el final.

  • Añadir un nodo entre el medio de dos nodos.

  • Añadir un nodo por el inicio.

  • Buscar un estudiante mediante su ID o por su Nombre

  • Mostrar la información de todos los nodos de la lista

  • Mostrar la cantidad de nodos que hay en la lista

  • Eliminar un nodo de la lista

  • Eliminar toda la lista

Matriz

#include <iostream>
// se incluye la clase Nodo para despues llamar a sus metodos 
#include "Nodo.h"
// se incluye la clase ListaSimple para despues llamar a sus metodos 
#include "ListaSimple.h"
// se incluye la clase stdlib para poder utilizar el metodo system que nos permitira utilizar los comandos basicos de la consola, en este caso lo utilizaremos para limpiar la pantalla de la consola system("cls")  
#include "stdlib.h"

using namespace std;

// método para llenar el nodo de la lista 
void llenar(Nodo *n, ListaSimple *obj)
{
    // declaramos una variable de tipo entero id  
    int id;
    // pedimos al usuario que ingrese la identificiación 
    cout << "Digite identificacion" << endl;
    cout << ">> ";
    // guardamos el valor en la variable id  
    cin >> id;
    // encapsulamos la variable id  
    n->setId(id);
    // declaramos una variable de tipo string nombre  
    string nom;
    // pedimos al usuario que ingrese el nombre 
    cout << "Digite nombre" << endl;
    cout << ">> ";
    // guardamos el valor en la variable nombre  
    cin >> nom;
    // encapsulamos la variable nombre  
    n->setNombre(nom);
    // declaramos una variable de tipo entero edad  
    int edad;
    // pedimos al usuario que ingrese la edad 
    cout << "Digite edad" << endl;
    cout << ">> ";
    // guardamos el valor en la variable edad  
    cin >> edad;
    // encapsulamos la variable edad  
    n->setEdad(edad);
}

// método para mostrar la informacion de un nodo 
void mostrar(Nodo *n)
{
    cout << "ID: " << n->getId() << endl;
    cout << "Nombre: " << n->getNombre() << endl;
    cout << "Edad: " << n->getEdad() << endl << endl;
}

// método para mostrar la informacion de todos los nodos 
void listarTodos(Nodo *n)
{
    // declaramos una variable temp de tipo Nodo y le asignamos n  
    Nodo *temp = n;
    // mientras haya un nodo en la lista 
    while(temp != NULL)
    {
        // se mostrara el nodo temp  
        mostrar(temp);
        // se saltara al siguiente nodo de temp  
        temp = temp->getSiguiente();
    }
}

// método para el menu 
int menu()
{
    int opcion = 0;
    do
    {
        cout << "1. Agregar estudiante al final de la Lista" << endl;
        cout << "2. Agregar estudiante entre dos Nodos existentes" << endl;
        cout << "3. Agregar estudiante al principio de la lista" << endl;
        cout << "4. Buscar estudiante por ID o por Nombre" << endl;
        cout << "5. Mostrar nodos de la lista" << endl;
        cout << "6. Cantidad de nodos que hay en la lista" << endl;
        cout << "7. Eliminar nodo de la lista" << endl;
        cout << "8. Eliminar toda la lista" << endl;
        cout << "9. Salir" << endl;
        cout << ">> ";
        cin >> opcion;
        system("cls");

    }
    while(opcion < 1 || opcion > 9);
    return opcion;
}

int main(void)
{
    // se crea un objeto de la clase ListaSimple (Instanciaciación) 
    ListaSimple *obj = new ListaSimple();
    // declaro dos variable de tipo entero opcion e id  
    int opcion, id;
    // declaro una variable de tipo string nombre  
    string nombre;
    // declaro una variable de tipo Nodo aux  
    Nodo *aux;
    // declaro una variable de tipo Nodo nd  
    Nodo *nd;
    do
    {
        // le asignare a la variable opcion el valor que retorne el método menu  
        opcion = menu();
        switch(opcion)
        {
            case 1:
                aux = new Nodo();
                llenar(aux, obj);
                system("cls");
                obj->agregarFinal(aux);
                break;
            case 2:
                cout << "Digite ID del estudiante que quiere agregar" << endl;
                cout << ">> ";
                cin >> id;
                system("cls");
                nd = obj->buscarId(id);
                if(nd != NULL)
                {
                    aux = new Nodo();
                    llenar(aux, obj);
                    obj->agregarEntreNodos(nd, aux);
                }
                else
                {
                    cout << "La ID NO se encuentra en la lista" << endl << endl;
                }
                break;
            case 3:
                aux = new Nodo();
                llenar(aux, obj);
                obj->agregarInicio(aux);

                if(obj->getCabeza() != NULL)
                {
                    listarTodos(obj->getCabeza());
                }
                else
                {
                    cout << "La Lista Está Vacía." << endl << endl;
                }
                break;
            case 4:
                int opc;
                do
                {
                    cout << "Como desea realizar la busqueda:" << endl;
                    cout << "1. ID" << endl;
                    cout << "2. Nombre" << endl;
                    cout << ">> ";
                    cin >> opc;
                    system("cls");
                }
                while(opc < 1 || opc > 2);
                if(opc == 1)
                {
                    cout << "Digite ID del estudiante a Buscar" << endl;
                    cout << ">> ";
                    cin >> id;
                    aux = obj->buscarId(id);
                    if(aux != NULL)
                    {
                        mostrar(aux);
                    }
                    else
                    {
                        cout << "La información del estudiante No se encuentra en la lista" << endl << endl;
                    }
                }
                else
                {
                    cout << "Digite Nombre del estudiante a Buscar" << endl;
                    cout << ">> ";
                    cin >> nombre;
                    aux = obj->buscarNombre(nombre);
                    if(aux != NULL)
                    {
                        mostrar(aux);
                    }
                    else
                    {
                        cout << "La información del estudiante No se encuentra en la lista" << endl << endl;
                    }
                }
                break;
            case 5:
                aux = obj->getCabeza();
                if (aux != NULL)
                {
                    listarTodos(aux);
                }
                else
                {
                    cout << "No hay nodos en la lista." << endl << endl;
                }
                break;
            case 6:
                cout << "Hay " << obj->contarNodos() << " nodos en la lista." << endl << endl;
                break;
            case 7:
                aux = obj->getCabeza();
                if (aux != NULL)
                {
                    obj->eliminar(aux);
                    cout << "Se elimino un nodo correctamente." << endl << endl;
                }
                else
                {
                    cout << "No hay nodos en la lista." << endl << endl;
                }
                break;
            case 8:
                obj->limpiar();
                cout << "La lista se ha eliminado." << endl << endl;
                break;
            default:
                break;
        }
    }
    while(opcion != 9);
}

    Tal vez alguien lo necesite






Ejercicios recientes
Ejercicios anteriores
Arriba! :v
Ejercicios recientes
Ejercicios anteriores
Arriba! :v