Hola soy estudiante de ingenieria informática y tengo una duda con una práctica que nos han mandado. La práctica consiste en la simulación de gestión de una ITV con colas y demás. Ya la tengo casi finalizada y al final pide una simulación automática pero cuando en una cola queda un vehículo y este es OK me da error y bloquea el programa. Podéis echarle un vistazo por favor? No se si es por que llevo todo el dia con esto pero no encuentro el fallo Ruborizado .
Gracias de antemano y un saludo!!
Código C++:
Ver original#include <cstdlib>
#include <iostream>
#include<time.h>
using namespace std;
typedef struct vehiculo
{
string matricula;
bool estado ;
char tipo;
string marca;
string modelo;
struct vehiculo *sig;
};
typedef struct Cola
{
struct vehiculo *cabecera;
struct vehiculo *ultimo;
}*lacola;
lacola crearCola(void)
{
lacola co= new struct Cola;
co->cabecera = new struct vehiculo;
co->ultimo = new struct vehiculo;
co->ultimo = NULL;
co->cabecera->sig = NULL;
return co;
}
bool colaVacia(lacola laco)
{
if(laco->ultimo == NULL)
return true;
else
return false;
}
void crearMatricula (string &matricula){
char nmatricula[8];
string numeros="0123456789";
string letrasma="BCFGHJKLMNPRSTVWXYZ";
for(int i=0;i<4;i++)
{
nmatricula
[i
]=numeros
[rand() %numeros.
length()]; }
for(int i=4;i<7;i++)
{
nmatricula
[i
]=letrasma
[rand() %letrasma.
length()]; }
nmatricula[7] = '\0';
matricula = string(nmatricula);
}
void anyadir(lacola laco)
{
struct vehiculo *nodo_aux;
nodo_aux = new struct vehiculo;
if(colaVacia(laco))
{
crearMatricula(nodo_aux->matricula);
nodo_aux->sig = NULL;
laco->cabecera->sig = nodo_aux;
laco->ultimo = nodo_aux;
}
else
{
crearMatricula(nodo_aux->matricula);
nodo_aux->sig = NULL;
laco->ultimo->sig = nodo_aux;
laco->ultimo = nodo_aux;
}
}
void quitar(lacola laco)
{
string resul;
struct vehiculo *nodo_aux;
if(colaVacia(laco))
{
cout << "LA COLA ESTA VACIA" << endl;
}
else
{
if(laco->cabecera->sig == laco->ultimo)
{
resul = laco->cabecera->sig->matricula;
laco->cabecera->sig=NULL;
laco->ultimo=NULL;
delete (laco->cabecera->sig);
}
else
{
resul= laco->cabecera->sig->matricula;
nodo_aux = laco->cabecera->sig;
laco->cabecera->sig = laco->cabecera->sig->sig;
delete (nodo_aux);
}
}
}
string primeroCola(lacola laco)
{
string x;
if(colaVacia(laco))
{
cout << "LA COLA ESTA VACIA" << endl<<endl;
return x;
}
else
cout<<laco->cabecera->sig->matricula;
return laco->cabecera->sig->matricula;
}
void completarColas(lacola laco)
{
struct vehiculo *nodo_aux;
nodo_aux = new struct vehiculo;
nodo_aux = laco->cabecera->sig;
int i =0;
int j = 5;
while(nodo_aux!=NULL)
{
i++;
nodo_aux = nodo_aux->sig;
}
j=j-i;
while(j!=0)
{
anyadir(laco);
j--;
}
}
bool estado(string h)
{
int a;
if(a<8)
return true;
else
return false;
}
void volver(lacola laco)
{
struct vehiculo *nodo_aux;
nodo_aux = new struct vehiculo;
nodo_aux = laco->cabecera->sig;
laco->cabecera->sig = nodo_aux->sig;
laco->ultimo->sig = nodo_aux;
nodo_aux->sig = NULL;
laco->ultimo = nodo_aux;
}
void ver(lacola laco)
{
struct vehiculo *nodo_aux;
nodo_aux = new struct vehiculo;
nodo_aux = laco->cabecera->sig;
while (nodo_aux!=NULL)
{
cout << " " << nodo_aux->matricula <<" ";
nodo_aux = nodo_aux->sig;
}
}
void simulacion(lacola laco)
{
cout<<"El estado del vehiculo con matricula ";
if(estado(primeroCola(laco)) == true)
{
cout<<" es OK, por lo tanto abandona la cola."<<endl;
quitar(laco);
cout<<endl;
ver(laco);
cout<<endl;
}
else
{
cout<<" es KO,por lo tanto vuelve al final de la cola."<<endl;
volver(laco);
cout<<endl;
ver(laco);
cout<<endl;
}
}