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

Bueno he logrado ir avanzando en mi proyecto pero ahora tengo una serie de errores con pase de argumentos y funciones al compilar, podria alguien ayudarme con el nuevo codigo, por favor?

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