Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda liga simple!!!!!!

Estas en el tema de Ayuda liga simple!!!!!! en el foro de C/C++ en Foros del Web. Hola a todos, tengo una duda en mi codigo. Lo que pasa es que todo me lo hace bien salvo una cosa: al momento de ...
  #1 (permalink)  
Antiguo 13/06/2009, 09:56
 
Fecha de Ingreso: junio-2009
Mensajes: 3
Antigüedad: 14 años, 10 meses
Puntos: 0
Ayuda liga simple!!!!!!

Hola a todos, tengo una duda en mi codigo.
Lo que pasa es que todo me lo hace bien salvo una cosa: al momento de eliminar un elemento que no existe en mi lista, en vez de mandarme el mensaje de que no existe, me cierra la aplicacion.
Uso el dev-c++ 4.9.9.2 y aqui el codigo

liga1.h
#include <iostream>
#include <string.h>
using namespace std;
struct coche
{
char marca[30];
char nombre[30];
int modelo;
struct coche *liga;
};
struct coche *acceso=NULL;
void agregarNodoAlInicio(char m[], char n[], int p)
{
struct coche *ap=new struct coche;
strcpy(ap->marca, m);
strcpy(ap->nombre, n);
ap->modelo=p;
ap->liga=acceso;
acceso=ap;
}
void agregarNonoAlFinal(char m[], char n[], int p)
{
struct coche *ap=new struct coche;
struct coche *aux=acceso;
struct coche *final=NULL;
if(aux==NULL)
{
strcpy(ap->marca, m);
strcpy(ap->nombre, n);
ap->modelo=p;
ap->liga=acceso;
acceso=ap;
}
else {while (aux!=NULL)
{if(aux->liga==NULL)
{
final=aux;
aux=aux->liga;
}
else aux=aux->liga;
}
strcpy(ap->marca, m);
strcpy(ap->nombre, n);
ap->modelo=p;
final->liga=ap;
ap->liga=NULL;
}
}
void recorrerLista()
{
struct coche *aux=acceso;
if(aux==NULL)
cout<<"Lista Vacia"<<endl;
else{ while (aux!=NULL)
{ cout<<aux->marca<<endl;
cout<<aux->nombre<<endl;
cout<<aux->modelo<<endl;
aux=aux->liga;}
}
system("pause");
}
void menu()
{
cout<<"1.-Agregar a Nodo al Inicio"<<endl;
cout<<"2.-Agregar a Nodo al Final"<<endl;
cout<<"3.-Eliminar por nombre"<<endl;
cout<<"4.-Ver Nodo"<<endl;
cout<<"5.-Salir"<<endl;
}
void eliminarNombre(char dato[])
{
struct coche *aux=acceso;
if(aux==NULL)
cout<<"Lista Vacia"<<endl;
else{
if(strcmp(aux->nombre, dato)==0)
{
cout<<"Dato eliminado"<<endl;
acceso=aux->liga;
delete(aux);
}
else
{
struct coche *posicion=NULL;
int flag=1;
while(flag==1 && aux!=NULL)
{
if(strcmp(aux->liga->nombre, dato)==0)
{
posicion=aux;
flag=0;
}
else aux=aux->liga;
}
if(posicion==NULL)
cout<<"No existe tal dato\n";
else
{
cout<<"Dato eliminado\n";
posicion->liga=posicion->liga->liga;
delete posicion->liga;
}
}
}
}

y aqui el principal

#include "liga1.h"
int main()
{
bool control=true;
char marca[30], nombre[30];
int modelo, opcion=0;
do{
menu();
cin>>opcion;
switch(opcion)
{
case 1:
cout<<"Introduce marca del coche"<<endl;
cin>>marca;
cout<<"Introduce nombre del coche"<<endl;
cin>>nombre;
cout<<"Introduce modelo del coche"<<endl;
cin>>modelo;
agregarNodoAlInicio(marca,nombre,modelo);
break;
case 2:
cout<<"Introduce marca del coche"<<endl;
cin>>marca;
cout<<"Introduce nombre del coche"<<endl;
cin>>nombre;
cout<<"Introduce modelo del coche"<<endl;
cin>>modelo;
agregarNonoAlFinal(marca,nombre,modelo);
break;
case 4:
recorrerLista();
break;
case 3:
cout<<"Introduce nombre a borrar\n";
cin>>nombre;
eliminarNombre(nombre);
break;
case 5:
control=false;
break;
default:"Opcion no valida, intente otra vez\n";
break;
}
}while(control==true);
return 0;
}

de antemano muchas gracias
  #2 (permalink)  
Antiguo 16/06/2009, 01:21
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Ayuda liga simple!!!!!!

Depuralo; sino podes decinos EXACTAMENTE (si, paso por paso) como reproducir el error.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:51.