Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/04/2016, 14:09
jusete
 
Fecha de Ingreso: abril-2016
Mensajes: 3
Antigüedad: 8 años
Puntos: 0
Duda con programa que gestiona ITV

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
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include<time.h>
  4.  
  5.  
  6. using namespace std;
  7.  
  8.  
  9. typedef struct vehiculo
  10. {
  11.     string matricula;
  12.     bool estado ;
  13.     char tipo;
  14.     string marca;
  15.     string modelo;
  16.     struct vehiculo *sig;
  17.    
  18.    
  19. };
  20. typedef struct Cola
  21. {
  22.     struct vehiculo *cabecera;
  23.     struct vehiculo *ultimo;   
  24. }*lacola;
  25.  
  26.  
  27. lacola crearCola(void)
  28. {
  29.    
  30.    
  31.     lacola co= new struct Cola;
  32.    
  33.     co->cabecera = new struct vehiculo;
  34.     co->ultimo = new struct vehiculo;
  35.    
  36.     co->ultimo = NULL;
  37.     co->cabecera->sig = NULL;
  38.    
  39.     return co;
  40. }
  41.  
  42. bool colaVacia(lacola laco)
  43. {
  44.     if(laco->ultimo == NULL)
  45.     return true;
  46.     else
  47.     return false;  
  48. }
  49.  
  50. void crearMatricula (string &matricula){
  51.  
  52.     char nmatricula[8];
  53.     string numeros="0123456789";
  54.     string letrasma="BCFGHJKLMNPRSTVWXYZ";
  55.  
  56.     for(int i=0;i<4;i++)
  57.     {
  58.         nmatricula[i]=numeros[rand() %numeros.length()];
  59.     }
  60.     for(int i=4;i<7;i++)
  61.     {
  62.         nmatricula[i]=letrasma[rand() %letrasma.length()];
  63.     }
  64.     nmatricula[7] = '\0';
  65.     matricula = string(nmatricula);
  66.  
  67. }
  68.  
  69. void anyadir(lacola laco)
  70. {
  71.     struct vehiculo *nodo_aux;
  72.    
  73.     nodo_aux = new struct vehiculo;
  74.    
  75.     if(colaVacia(laco))
  76.     {
  77.        
  78.         crearMatricula(nodo_aux->matricula);
  79.         nodo_aux->sig = NULL;
  80.         laco->cabecera->sig = nodo_aux;
  81.         laco->ultimo = nodo_aux;   
  82.     }      
  83.     else
  84.     {
  85.         crearMatricula(nodo_aux->matricula);
  86.         nodo_aux->sig = NULL;
  87.         laco->ultimo->sig = nodo_aux;  
  88.         laco->ultimo = nodo_aux;
  89.     }
  90. }
  91. void quitar(lacola laco)
  92. {
  93.     string resul;
  94.     struct vehiculo *nodo_aux;
  95.     if(colaVacia(laco))
  96.     {
  97.         cout << "LA COLA ESTA VACIA" << endl;
  98.        
  99.     }
  100.     else
  101.     {
  102.         if(laco->cabecera->sig == laco->ultimo)
  103.         {
  104.             resul = laco->cabecera->sig->matricula;
  105.             laco->cabecera->sig=NULL;
  106.             laco->ultimo=NULL;
  107.             delete (laco->cabecera->sig);
  108.         }
  109.         else
  110.         {
  111.             resul= laco->cabecera->sig->matricula;
  112.             nodo_aux = laco->cabecera->sig;
  113.             laco->cabecera->sig = laco->cabecera->sig->sig;
  114.             delete (nodo_aux);
  115.         }
  116.     }
  117.    
  118. }
  119. string primeroCola(lacola laco)
  120. {
  121.     string x;
  122.     if(colaVacia(laco))
  123.     {
  124.         cout << "LA COLA ESTA VACIA" << endl<<endl;
  125.         return x;
  126.        
  127.     }
  128.     else
  129.         cout<<laco->cabecera->sig->matricula;
  130.         return laco->cabecera->sig->matricula;     
  131. }
  132.  
  133. void completarColas(lacola laco)
  134. {
  135.     struct vehiculo *nodo_aux;
  136.     nodo_aux = new struct vehiculo;
  137.     nodo_aux = laco->cabecera->sig;
  138.     int i =0;
  139.     int j = 5;
  140.    
  141.     while(nodo_aux!=NULL)
  142.     {
  143.         i++;
  144.         nodo_aux = nodo_aux->sig;  
  145.        
  146.     }
  147.    
  148.     j=j-i;
  149.    
  150.     while(j!=0)
  151.     {
  152.        
  153.         anyadir(laco);
  154.         j--;
  155.     }
  156.      
  157. }
  158. bool estado(string h)
  159. {
  160.  
  161.  
  162.     int a;
  163.     a= rand() % 10 + 1;
  164.     if(a<8)
  165.         return true;
  166.    
  167.     else
  168.         return false;
  169.    
  170.    
  171. }
  172. void volver(lacola laco)
  173. {
  174.     struct vehiculo *nodo_aux;
  175.     nodo_aux = new struct vehiculo;
  176.     nodo_aux = laco->cabecera->sig;
  177.     laco->cabecera->sig = nodo_aux->sig;
  178.     laco->ultimo->sig = nodo_aux;
  179.     nodo_aux->sig = NULL;
  180.     laco->ultimo = nodo_aux;
  181.    
  182. }
  183. void ver(lacola laco)
  184. {
  185.     struct vehiculo *nodo_aux;
  186.    
  187.     nodo_aux = new struct vehiculo;
  188.     nodo_aux = laco->cabecera->sig;
  189.     while (nodo_aux!=NULL)
  190.     {
  191.         cout << " " << nodo_aux->matricula <<" ";
  192.         nodo_aux = nodo_aux->sig;
  193.     }  
  194.  
  195. }
  196. void simulacion(lacola laco)
  197. {  
  198.    
  199.    
  200.     cout<<"El estado del vehiculo con matricula  ";
  201.     if(estado(primeroCola(laco)) ==  true)
  202.     {
  203.         cout<<" es OK, por lo tanto abandona la cola."<<endl;
  204.         quitar(laco);
  205.         cout<<endl;
  206.         ver(laco);
  207.         cout<<endl;
  208.     }
  209.     else
  210.     {
  211.          cout<<" es KO,por lo tanto vuelve al final de la cola."<<endl;
  212.          volver(laco);
  213.          cout<<endl;
  214.          ver(laco);
  215.          cout<<endl;
  216.          
  217.  
  218.     }
  219.        
  220.    
  221.    
  222. }