1
« en: Domingo 10 de Abril de 2016, 04:09 »
buena noche, tengo un codigo donde debo de ingresar un dato y eliminarlo pero no me eliminar, por favor si alguien sabe donde tengo el error, poco se programar!!! GRACIAS A LA PERSONA QUE ME COLABORE
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
class Nodo
{
private:
Nodo *sig;
Nodo *primero;
string nombre;
public:
friend class Marca_y_Modelo;
Nodo()
{
sig = NULL;
nombre = "";
primero = NULL;
}
};
class Marca_y_Modelo
{
private:
Nodo *primerMarca;
public:
Marca_y_Modelo()
{
primerMarca = NULL;
}
void insertarMarca(string marca)
{
Nodo *nuevo;
nuevo = new Nodo;
nuevo->nombre = marca;
if (primerMarca == NULL)
primerMarca = nuevo;
else
{
Nodo *aux;
aux = primerMarca;
while (aux->sig != NULL)
aux = aux->sig;
aux->sig = nuevo;
}
}
void insertarModelo(string marca2, string modelo)
{
if (primerMarca != NULL)
{
Nodo *aux;
aux = primerMarca;
while (aux->nombre != marca2 && aux->sig != NULL)
aux = aux->sig;
if (aux->nombre == marca2)
{
Nodo *nuevo;
nuevo = new Nodo;
nuevo->nombre = modelo;
if (aux->primero == NULL)
aux->primero = nuevo;
else
{
Nodo *aux2;
aux2 = aux->primero;
while (aux2->sig != NULL)
aux2 = aux2->sig;
aux2->sig = nuevo;
}
}
else
cout << " Marca inexistente!! " << endl;
}
else
cout << " Modelo ingresado antes que la marca " << endl;
}
void eliminarModelo(string marca2, string modelo)
{
if (primerMarca != NULL)/*INGRESA A LA LISTA MARCA Y PREGUNTA SI ESTA VACIA*/
{
Nodo *aux;
aux = primerMarca;
while (aux->nombre != marca2 && aux->sig != NULL)
aux = aux->sig;
if (aux->nombre == marca2)/*INGRESA A LA LISTA MARCA Y PREGUNTA SI LA MARCA ES IGUAL A LA QUE ESCRIBIMOS POR PANTALLA*/
{
Nodo *aux2;
aux2->nombre = modelo;
if (aux2->primero == NULL/*SI LA MARCA ESCRITA ES CORRECTA ENTRA A LA LISTA DE MODELOS Y PREGUNTA SI ES VACIA*/
{
cout << " Modelo vacio!! " << endl;
else
if (aux2->nombre == modelo)/*ENTRA A LA LISTA DE MODELOS Y BUSCA EL MODELO QUE ESCRIBIMOS Y LO ELIMINA*/
{
aux2->primero = aux->sig;
}
/*SI NO ENCUENTRA EL MODELO DEBE DE SALIR EL MENSAJE MODELO NO EXISTE*/
}
}
else
cout << " Marca inexistente!! " << endl;
}
}
void presentar()
{
if (primerMarca != NULL)
{
Nodo *aux;
aux = primerMarca;
while (aux != NULL)
{
cout << "Marca: " << aux->nombre << endl;
if (aux->primero != NULL)
{
Nodo *aux2;
aux2 = aux->primero;
while (aux2 != NULL)
{
cout << "Modelo: " << aux2->nombre << endl;
aux2 = aux2->sig;
}
}
else
cout << aux->nombre << "No tiene modelos" << endl;
aux = aux->sig;
}
}
else
cout << "No hay datos para presentar" << endl;
}
void menu()
{
int menu;
string marca;
string marca2;
string modelo;
do
{
cout << "--------------------------------" << endl;
cout << "------------- MENU -------------" << endl;
cout << "--------------------------------" << endl;
cout << " 1. Agregar marca " << endl;
cout << " 2. Agregar modelo de una marca " << endl;
cout << " 3. Eliminar Modelo " << endl;
cout << " 4. Mostrar la lista " << endl;
cout << " 5. Salir " << endl;
cout << "--------------------------------" << endl;
cout << "Digite opcion: ";
cin >> menu;
switch (menu)
{
case 1:
cout << "Escriba la marca: ";
cin >> marca;
insertarMarca(marca);
break;
case 2:
cout << "Escriba la marca para luego asignar un modelo: ";
cin >> marca2;
cout << "Escriba el modelo: ";
cin >> modelo;
insertarModelo(marca2, modelo);
break;
case 3:
cout << "Escriba la marca: ";
cin >> marca2;
cout << "Escriba el modelo: ";
cin >> modelo;
eliminarModelo(marca2, modelo);
break;
case 4:
presentar();
break;
default:
cout << "Finalizar" << endl;
break;
}
} while (menu != 5);
}
};
void main()
{
Marca_y_Modelo lista;
lista.menu();
}