Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/12/2011, 23:41
pyromiyuve
 
Fecha de Ingreso: diciembre-2011
Mensajes: 21
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta Problema para terminar y compilar un proyecto

Cita:
Iniciado por pyromiyuve Ver Mensaje
Hola! He logrado ir avanzando con mi codigo, pero todavia tengo problemas, ya que no se como terminarlo...

Se que lo mas probable es que no me logre explicar bien asi que anexo el enunciado de mi proyecto para las dudas en el link:

Código HTML:
Ver original
  1. http://ccg.ciens.ucv.ve/~esmitt/ayed/II-2011/proyecto2.pdf

y mi codigo del proyecto es:

Código c++:
Ver original
  1. #include<stdio.h>
  2. #include<stdio.h>
  3. #include<iostream>
  4. using namespace std;
  5.  
  6. int Capital=20;
  7.  
  8. int cantidadItems(char* c){ //Funcion que calcula cuantos repuestos disponemos
  9.     int i=0;int k=0;
  10.     do{
  11.         if(*(c+i)==' '){
  12.             k++;
  13.         }
  14.         i++;
  15.     }while(*(c+i)!=('\0'));
  16.    
  17.     return(k+1);
  18. };
  19.  
  20. int cant(char* c, int k){
  21.     do{
  22.         k++;
  23.     }while((*(c+k)!=('\0')) && (*(c+k)!=(' ')));
  24.    
  25.     return(k);
  26. };
  27.  
  28. //no se puede utilizar "set"
  29.  
  30. class Vehiculo{
  31.     string placa;
  32.     char puerta;
  33.     int averiado;
  34.     public:
  35.         Vehiculo(string placa, char puerta, int averiado){
  36.             this->placa = placa;//this es un puntero que se referencia a si mismo, es decir a mi clase!
  37.             this->puerta = puerta;
  38.             this->averiado = averiado;
  39.         }
  40.         string get_placa(){
  41.             return placa;
  42.         }
  43.         char get_puerta(){
  44.             return puerta;
  45.         }      
  46.         int get_averiado(){
  47.             return averiado;
  48.         }
  49. };
  50. class Cola{
  51.     class Nodo{
  52.         Vehiculo *v;
  53.         Nodo *siguiente;
  54.         public:
  55.             Nodo(Vehiculo *v){
  56.                 this->v = v;
  57.                 siguiente = NULL;
  58.             }
  59.             Vehiculo* get_v(){
  60.                 return v;
  61.             }
  62.             void set_siguiente(Nodo *n){
  63.                 siguiente = n;
  64.             }  
  65.             Nodo* get_siguiente(){
  66.                 return siguiente;
  67.             }
  68.     };
  69.    
  70.     Nodo *pri, *ult;
  71.     public:
  72.         Cola(){
  73.             pri = ult = NULL;
  74.         }
  75.         Vehiculo* primero(){
  76.             return pri->get_v();
  77.         }
  78.         void encolar(Vehiculo* v){
  79.             Nodo *nuevo = new Nodo(v);
  80.             if(ult==NULL){
  81.                 pri = ult = nuevo;
  82.             }else{
  83.                 ult->set_siguiente(nuevo);
  84.                 ult = nuevo;
  85.             }
  86.         }
  87.        
  88.         void desencolar(){
  89.             Nodo *aux = pri;
  90.             pri = pri->get_siguiente();
  91.             delete aux;
  92.             if(pri==NULL)
  93.                 ult = NULL;
  94.         }
  95.        
  96.         bool esVacia(){
  97.             return pri==NULL;
  98.         }
  99. };
  100.  
  101.  
  102. int i = 0;
  103. void mostrar(char puerta, Cola *c){
  104.     while(!c->esVacia()){
  105.         if(puerta=='A'){
  106.             cout << "Vehiculo " << ++i << ": " << c->primero()->get_placa() << endl;
  107.         }else if(puerta=='B'){
  108.             cout << "Vehiculo " << ++i << ": " << c->primero()->get_placa() << endl;
  109.         }c->desencolar();
  110.     }
  111. }
  112. void verificar(Lista *l, Cola *a, Cola *b){
  113.     if(!l->esVacia()){
  114.         Lista *aux = new Lista(); aux->p = l->primero();
  115.         while(aux->p!=NULL){
  116.             if(aux->acceder(aux->p)=='A'){
  117.                 mostrar(aux->acceder(aux->p),a);
  118.             }else if(aux->acceder(aux->p)=='B'){
  119.                 mostrar(aux->acceder(aux->p),b);
  120.             }aux->p = aux->siguiente(aux->p);
  121.         }delete aux;
  122.     }
  123.  
  124. };
  125.  
  126. //LISTA DE ORDEN
  127. class Lista{
  128.     class Nodo{
  129.         char orden;
  130.         Nodo *siguiente;
  131.         public:
  132.             Nodo(char orden){
  133.                 this->orden = orden;
  134.                 siguiente = NULL;
  135.             }
  136.            
  137.             char get_orden(){
  138.                 return orden;
  139.             }
  140.            
  141.             void set_siguiente(Nodo *n){
  142.                 siguiente = n;
  143.             }
  144.            
  145.             Nodo* get_siguiente(){
  146.                 return siguiente;
  147.             }
  148.     };
  149.    
  150.     Nodo *head;
  151.     int cantidad;
  152.     typedef Nodo* Posicion;
  153.     public:
  154.         Posicion p;
  155.        
  156.         Lista(){
  157.             head = NULL;
  158.             cantidad = 0;
  159.         }
  160.        
  161.         void insertar(Posicion p, char orden){
  162.             Nodo *nuevo = new Nodo(orden);
  163.             if(nuevo!=NULL){//COMPRUEBO QUE HAYA MEMORIA
  164.                 if(head==NULL){
  165.                     head = nuevo;
  166.                     cantidad++;
  167.                 }else{
  168.                     Nodo* r = head;
  169.                     while(r->get_siguiente()!=p){
  170.                         r = r->get_siguiente();
  171.                     }
  172.                    
  173.                     if(p==NULL){
  174.                         r->set_siguiente(nuevo);
  175.                     }else{
  176.                         nuevo->set_siguiente(r->get_siguiente());
  177.                         r->set_siguiente(nuevo);
  178.                     }
  179.                 }
  180.             }
  181.         }
  182.        
  183.         Posicion fin(){
  184.             Nodo *r = head;
  185.             while(r->get_siguiente()!=NULL){
  186.                 r = r->get_siguiente();
  187.             }return r;
  188.         }
  189.        
  190.         Posicion primero(){
  191.             if(head!=NULL){
  192.                 return head;
  193.             }else{
  194.                 return fin();
  195.             }
  196.         }
  197.        
  198.         Posicion siguiente(Posicion p){
  199.             return p->get_siguiente();
  200.         }
  201.        
  202.         char acceder(Posicion p){
  203.             return p->get_orden();
  204.         }
  205.        
  206.         bool esVacia(){
  207.             return head==NULL;
  208.         }
  209. };
  210.  
  211. class myString{
  212.     public:
  213.         Lista *primero;
  214.         Lista *ultimo;
  215.         Lista *aux;
  216.         int contador;
  217.        
  218.     public:
  219.         myString(){;
  220.             primero = NULL;
  221.             ultimo = NULL;
  222.             aux = NULL;
  223.             contador = 0;
  224. }
  225.  
  226.     void Insertar (char c);
  227.     void Mostrar ();
  228.    
  229. };
  230.  
  231.  void myString::Insertar(char aux){
  232.  
  233.     Lista* nuevo= new nodoLista();
  234.     nuevo->caracter=aux;
  235.     if(primero==NULL && ultimo==NULL){
  236.         primero=nuevo;
  237.         ultimo=nuevo;
  238.     }else{
  239.         ultimo->siguiente=nuevo;
  240.         ultimo=nuevo;
  241.         contador++; //revisar no estoy segura de si hace falta
  242.     }
  243. };
  244.  
  245. void myString::Mostrar(){
  246.     aux=primero;
  247.     do{
  248.     cout<<aux->caracter;
  249.     aux=aux->siguiente;
  250.     }while(aux!=NULL);
  251.    
  252. };
  253.  
  254. class Repuestos{ //Pila donde voy a guardar los Repuestos
  255.     public:
  256.         nodoCola *ultimo;
  257.         nodoCola *aux;
  258.         nodoCola *tope;
  259.         int contador;//cantidad de carros que entran
  260.         public:
  261.         Repuestos(){
  262.             tope=NULL;
  263.             contador=0;
  264.             ultimo=NULL;
  265.             aux=NULL;
  266.         }
  267.         void Insertar(char placa[], char puerta, char averiado, char* item, int contador);
  268.         void Mostrar();
  269.     void Usados(int i);
  270. };
  271.  
  272. void Repuestos :: Usados(char placa[], char puerta, char averiado ,char* item,int contador){// FALTA por resolver!!!!!!!!!!!!
  273.  
  274.     int Ing=Capital;
  275.     int egreso=0;
  276.     int ingreso=0;
  277.     int c;
  278.    
  279.    
  280.     if(ultimo->Averiado=='0'){ // se repara y factura a la vez
  281.        
  282.             egreso=((ultimo->contador)*1); //Contador indica la cantidad de repuestos a reparar en el carro que esta siendo atendido
  283.             ingreso=((ultimo->contador)*0);
  284.             Capital +=(ingreso-egreso); //Indica la ganancia obtenida por Liam tras la reparacion del carro atendido
  285.            
  286.         };
  287.          
  288.     aux=ultimo;
  289.     ultimo=aux->siguiente;//eliminacion del carro: se libera el nodo
  290.     cout<<"Vehiculo "<<i<<": ";
  291.    
  292.     for(k=0;k<9;k++)
  293.     {
  294.         cout<<aux->Placa[k];
  295.     }
  296.     cout<<"\n"<<-1*(egreso)<<"\n"<<ingreso<<endl;
  297.    
  298.     //apilamos FALTA POR REVISAR Y TERMINAR DE HACER!!!!
  299.  
  300.     nodoCola *aux
  301.     aux->siguiente=ultimo;
  302.     ultimo=aux;
  303. };
  304.  
  305. void Repuestos::Insertar(char placa[], char puerta, char averiado ,char* item,int contador){
  306.   nodoCola* nuevo=new nodoCola();
  307.    int k=0;
  308.    
  309.    for(k=0;k<9;k++){
  310.         nuevo->placa[k]=placa[k];
  311.     };
  312.    
  313.    nuevo->puerta = puerta;
  314.    nuevo->averiado = averiado;
  315.    nuevo->Item = item; 
  316.    nuevo->contador = contador;
  317.     //se empiezan ha armar los Repuestos
  318.     if(ultimo==NULL){
  319.         ultimo=nuevo;
  320.     }else{
  321.         nuevo->siguiente=ultimo;
  322.         ultimo=nuevo;
  323.     }; 
  324.    
  325.     contador++; //cantidad de carros
  326. };
  327.  
  328. void Repuestos::Mostrar(){ //Muestra la placa del ultimo carro en insertar repuestos
  329.     int k=0;
  330.     for(k=0;k<9;k++){
  331.         cout<<aux->placa[k];
  332.     }  
  333. };
  334.    
  335. void Repuestos::Reparar(int i){
  336.  
  337.     int Ing=Capital;
  338.     int egreso=0;
  339.     int ingreso=0;
  340.     int k;
  341.    
  342.    
  343.     if(ultimo->averiado=='1'){ // se repara y factura a la vez
  344.        
  345.             egreso=((ultimo->contador)*2);
  346.             ingreso=((ultimo->contador)*3);
  347.             Capital +=(ingreso-egreso);
  348.            
  349.        
  350.     }else if((Ing-ultimo->contador)>0){ //si averiado es igual a cero verificamos si tenemos capital para comprar
  351.             Capital-=ultimo->contador; //en caso de que el capital sea positivo, se pueda comprar.Se realiza una sustraccion al ingreso ingreso neto de Liam
  352.             egreso=ultimo->contador;
  353.         };
  354.          
  355.     aux=ultimo;
  356.     ultimo=aux->siguiente;//eliminacion logica
  357.     cout<<"Vehiculo "<<i<<": ";
  358.    
  359.     for(k=0;k<9;k++)
  360.     {
  361.         cout<<aux->placa[k];
  362.     }
  363.     cout<<"\n"<<-1*(egreso)<<"\n"<<ingreso<<endl;
  364.      
  365.      //desapilamos
  366.  
  367.     delete(aux);//eliminacion del carro atendido
  368. };
  369.  
  370. // MENU PRINCIPAL DEL PROGRAMA
  371. int main(){
  372.     int n,i,k;
  373.     char *c=NULL;//entrada
  374.     Vehiculo *v;
  375.     string placa = "";
  376.     char averiado, puerta, orden;
  377.     char aux;
  378.     char *items=NULL;
  379.     Repuestos A;
  380.     Repuestos B;
  381.     myString string;
  382.    
  383.     Cola *puertaA = new Cola(), *puertaB = new Cola();
  384.     Lista *lorden = new Lista();
  385.  
  386.     cin>>n; //cantidad de vehiculos a ingresar
  387.     cin.ignore();
  388.     for(i=0;i<n;i++)
  389.     {
  390.         fflush(stdin);
  391.         c=new char[15];
  392.         cin.getline(c,15);
  393.         k=0;
  394.         do{
  395.             placa[k]=*c;     //calcula la cantidad de atributos necesarios para la placa
  396.             k++; c++;        //placa
  397.         }while(*c!=' ');
  398.        
  399.         while(k<10){
  400.             placa[k]=' '; //si la placa posee menos de 10 elementos alfanumericos,se completan los espacios con "vacio"
  401.             k++;
  402.         }    
  403.            
  404.         puerta=(*(c+1)); //calcula el atributo: puerta
  405.         averiado=(*(c+3));  //calcula el atributo: averiado    
  406.    
  407.        
  408.         fflush(stdin);
  409.         items=new char[1002];
  410.         cin.getline(items,1002);
  411.         k=cantidadItems(items);
  412.    
  413.         cin >> placa >> puerta >> averiado;
  414.         v = new Vehiculo(placa,puerta,averiado);
  415.            
  416.         if(puerta=='A' || puerta=='a') //Insertamos teniendo en cuenta la puerta
  417.         {
  418.             puertaA->encolar(v);
  419.             A.Insertar(placa,puerta,averiado,items,k);
  420.            
  421.         }
  422.         else if(puerta=='B' || puerta=='b')
  423.         {
  424.             puertaB->encolar(v);
  425.             B.Insertar(placa,puerta,averiado,items,k);
  426.            
  427.         }
  428.     }  
  429.  
  430.  
  431.         for(int j = 0; j < n; ++j){
  432.         cin >> orden;
  433.         lorden->insertar(NULL,orden);
  434.     }
  435.    
  436.         verificar(lorden,puertaA,puertaB);
  437.         delete puertaA, puertaB, v, lorden;
  438.  
  439.  
  440.     for(i=0;i<n;i++){
  441.         cin>>aux;
  442.         string.Insertar(aux);
  443.     }
  444.     string.aux=string.primero;
  445.     for(i=0;i<n;i++){
  446.         if(string.aux->caracter=='A' || string.aux->caracter=='a'){
  447.             if(A.ultimo!=NULL){
  448.                 A.Reparar(i+1);
  449.                
  450.             }else{
  451.                 B.Reparar(i+1);
  452.                
  453.             }  
  454.         }else if(puerta=='B' || puerta=='b'){
  455.             if(B.ultimo!=NULL){
  456.                 B.Reparar(i+1);
  457.                
  458.             }else{
  459.                 A.Reparar(i+1);
  460.            
  461.                 }  
  462.         }
  463.         string.aux=string.aux->siguiente;
  464.     }
  465.     cout<<Capital<<endl;
  466. return 0;
  467. };
  468.  
  469. }

Podria alguien por favor ayudarme?

Muchas gracias

Última edición por pyromiyuve; 22/12/2011 a las 15:52 Razón: aclarar la duda y el codigo