Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - nolasco281

#281
Hola yoel_alejandro gracias por contestar ahora lo leeo
#282
Hola.

Espero que me pueda ayudar con mi duda estoy tratando de hacer métodos de administración, pero al momento de mostrar datos en pantalla no sé qué estoy haciendo mal.

No es un error de sintaxis creo que es mas de lógica pero no entiendo que parte es la que trabaja mal.

El problema que detecto es en el archivo de implementación de Camion.cpp en la función Camion::flistaDeCamiones() en el for cuando intento acceder a la a listaDeCamiones->imprimir(); el primer registro si lo introduce bien pero cuando le agrego otro, el programa se cierra y parece, que borrara el primer registro.

Y eso no me deja seguir con los demás métodos.

he sacado la funcion imprimir fuera del for por solo me registra una ves los datos, y no una secuencia, si lo pongo antes de empezar el for me hace la secuencia pero me repite los ultimos datos las veces que haya registrado un camion.

Lamento preguntar tanto.

//Camion.cpp
Código (cpp) [Seleccionar]
#include "Camion.h"
#include <iostream>
#include <iomanip>
#include <string>

using namespace std;
 
Camion::Camion (int idCam, int cilindrajeCam, int puertasCam, int anioCam,
               double precioCam, string marcaCam, string modeloCam,
               string colorCam)
               {
                  idCamion = idCam;
                  cilindrajeCamion = cilindrajeCam;
                  nPuertasCamion = puertasCam;
                  anioCamion = anioCam;
                  precioCamion = precioCam;
                  marcaCamion = marcaCam;
                  modeloCamion = modeloCam;
                  colorCamion = colorCam;
                 
                  Maximo =100;
                  cantidadDeCamiones =0;
               }
//Funciones set
void Camion::setIdCamion(int idCam)
{
    idCamion = idCam;
}

void Camion::setCilindrajeCamion(int cilindrajeCam)
{
    cilindrajeCamion = cilindrajeCam;
}

void Camion::setNPuertasCamion(int puertasCam)
{
    nPuertasCamion = puertasCam;
}

void Camion::setanioCamion(int anioCam)
{
    anioCamion = anioCam;
}

void Camion::setPrecioCamion(double precioCam)
{
    precioCamion = precioCam;
}

void Camion::setMarcaCamion(string marcaCam)
{
    marcaCamion = marcaCam;
}

void Camion::setModeloCamion(string modeloCam)
{
    modeloCamion = modeloCam;
}

void Camion::setColorCamion(string colorCam)
{
    colorCamion = colorCam;
}

//Funciones get
int Camion::getIdCamion() const
{
   return idCamion;
}

int Camion::getCilindrajeCamion() const
{
   return cilindrajeCamion;
}

int Camion::getnPuertasCamion() const
{
   return nPuertasCamion;
}

int Camion::getanioCamion()const
{
   return anioCamion;
}

double Camion::getPrecioCamion() const
{
      return precioCamion;
}

string Camion::getMarcaCamion() const
{
      return marcaCamion;
}

string Camion::getModeloCamion() const
{
      return modeloCamion;
}

string Camion::getColorCamion() const
{
      return colorCamion;
}

//Ingresa un nuevo camion

void Camion::ingresarCamion()
{
  listaDeCamiones = new Camion*[Maximo];// arreglo de 100
 
  if (cantidadDeCamiones < Maximo)
  {
    system("cls");
    cout << "Ingrese los datos del camion\n";
    cout << "Ingrese el ID del camion: ";
    cin  >> idCamion;
   
    cout << "Ingrese la Marca del Camion: ";
    cin  >> marcaCamion;
   
    cout << "Ingrese el Modelo del camion: ";
    cin  >> modeloCamion;
   
    cout << "Ingrese el año del Camion: ";
    cin  >> anioCamion;
   
    cout << "Ingrese el cilindraje del camion: ";
    cin  >> cilindrajeCamion;
   
    cout << "Ingrese el numero de puertas: ";
    cin  >>  nPuertasCamion;
   
    cout << "Ingrese el color del camion: ";
    cin  >> colorCamion;
   
    cout << "Ingrese el presio del camion: ";
    cin  >> precioCamion;
   
    listaDeCamiones[cantidadDeCamiones] =
    new Camion(idCamion, cilindrajeCamion,
        nPuertasCamion, anioCamion,
        precioCamion, marcaCamion,
        modeloCamion,colorCamion);
   
    cantidadDeCamiones++;
   
    cout << endl <<"Los datos del camion fueron ingresados correctamente\n";
  }
  else
  {
      system("cls");
      cout << "Ya no hay espacio disponible para mas camiones\n";
  }
}

//Muestra los datos del camion
void Camion::flistaDeCamiones()
{
    if (cantidadDeCamiones==0)
    {
      system("cls");
      cout<<"No se a registrado ninguna Camion todavía"<<endl;
    }
      else
      {
          cout<<"..:::Lista de Camiones:::.."<<endl<<endl;
          cout << setw(10)<<"Id Camion"<<setw(15)<<"Modelo"<<setw(15)<<"marca"<<endl;
          cout<<"================================================="<<endl;
                 
          //Imprimmir todos los camiones almacenadas en el arreglo
          for (int i=0; i<cantidadDeCamiones; i++)
          {
            listaDeCamiones[i]->imprimir(); //PROBLEMA Y NO LO IDENTIFICO
          }
          cout<<endl<<"*******Fin de la lista **********"<<endl<<endl;
      }
}
//Busca ese camion
int Camion::buscarCamion(int codigo)
{
   for (int i=0; i < cantidadDeCamiones; i++)
   {
       if(listaDeCamiones[i]->getIdCamion() == codigo)
       {
         return i;
       }
   }
   return -1;
}

//Modifica ese Camion.
void Camion::modificarCamion()
{
    if (cantidadDeCamiones == 0)
    {
      system("cls");
      cout << "No se ha registrado ningun camion tadavia\n";
    }
    else
    {
        cout << "Modificar Camion\n\n";
        int codigoCamion;
        cout << "Ingrese el codigo del camion: ";
        cin >> codigoCamion;
       
        int ubicacion = buscarCamion(codigoCamion);
        if (ubicacion == -1)
        {
          cout << "Lo sentimos ese codigo del camion no existe\n";
        }
        else
        {
            cout << "El codigo se encontro\n\n";
            cout << setw(10)<<"Id"<<setw(15)<<"Modelo"<<setw(15)<<"marca"<<endl;
            cout<<"================================================="<<endl;
           
            listaDeCamiones[ubicacion]->imprimir();
            cout << "\n\n";
            cout  << "Ingrese los nuevos datos del Camion\n\n";
           
            cout <<  "Marca";
            cin  >> marcaCamion;
           
            cout << "Modelo del camion: ";
            cin  >> modeloCamion;
           
            cout << "Año del Camion: ";
            cin  >> anioCamion;
           
            cout << "Cilindraje del camion: ";
            cin  >> cilindrajeCamion;
           
            cout << "numero de puertas: ";
            cin  >>  nPuertasCamion;
           
            cout << "Color del camion: ";
            cin  >> colorCamion;
           
            cout << "Presio del camion: ";
            cin  >> precioCamion;
           
            listaDeCamiones[ubicacion]->setMarcaCamion(marcaCamion);
            listaDeCamiones[ubicacion]->setModeloCamion(modeloCamion);
            listaDeCamiones[ubicacion]->setanioCamion(anioCamion);
            listaDeCamiones[ubicacion]->setCilindrajeCamion(cilindrajeCamion);
            listaDeCamiones[ubicacion]->setNPuertasCamion(nPuertasCamion);
            listaDeCamiones[ubicacion]->setColorCamion(colorCamion);
            listaDeCamiones[ubicacion]->setPrecioCamion(precioCamion);
           
            cout << "El camion fue modificado Exitosamente.\n";
        }
    }
}

void Camion::eliminarCamion()
{
    if (cantidadDeCamiones == 0)
    {
      system("cls");
      cout << "No se ha registrado ningun camion tadavia\n";
    }
    else
    {
        cout << "Eliminar Camion\n\n";
        int codigoCamion;
        cout << "Ingrese el codigo a eliminar: ";
        cin >> codigoCamion;
       
        int ubicacion = buscarCamion(codigoCamion);
        if (ubicacion == -1)
        {
          cout << "Lo sentimos ese codigo del camion no existe\n";
        }
        else
        {
            cout << "El codigo se encontro\n\n";
            cout << setw(10)<<"Id"<<setw(15)<<"Modelo"<<setw(15)<<"marca"<<endl;
            cout<<"================================================="<<endl;
           
            listaDeCamiones[ubicacion]->imprimir();
            cout << "\n\n";
           
            cout << "Presione enter para eliminar ese camion\n\n";
            system("pause");
           
            //Pasa a eliminar usando una copia del arreglo
            Camion**temporalListaDeCamiones = new Camion*[Maximo];
            int temporalCantidadDeCamiones = 0;
           
            //Se copia el arreglo en otro arreglo exepto el que se quiere eliminar
            for(int i =0; i < cantidadDeCamiones; i++)
            {
              if(i!=ubicacion)
              {
                temporalListaDeCamiones[temporalCantidadDeCamiones] = new Camion(listaDeCamiones[i]->getIdCamion(),
                                                                                 listaDeCamiones[i]->getCilindrajeCamion(),
                                                                                 listaDeCamiones[i]->getnPuertasCamion(),
                                                                                 listaDeCamiones[i]->getanioCamion(),
                                                                                 listaDeCamiones[i]->getPrecioCamion(),
                                                                                 listaDeCamiones[i]->getMarcaCamion(),
                                                                                 listaDeCamiones[i]->getModeloCamion(),
                                                                                 listaDeCamiones[i]->getColorCamion());
                temporalCantidadDeCamiones++;
              }//Fin if
            }//Fin for
           
            //Limpio la memoria usada por el arreglo principal de camiones
            for(int i=0; i<cantidadDeCamiones; i++)
            {
              listaDeCamiones[i]->~Camion();
            }
           
            //copia el arreglo temporal al principio
            cantidadDeCamiones = 0;
            for(int i =0; i<temporalCantidadDeCamiones; i++)
            {
               listaDeCamiones[cantidadDeCamiones] = new Camion(temporalListaDeCamiones[i]->getIdCamion(),
                                                                temporalListaDeCamiones[i]->getCilindrajeCamion(),
                                                                temporalListaDeCamiones[i]->getnPuertasCamion(),
                                                                temporalListaDeCamiones[i]->getanioCamion(),
                                                                temporalListaDeCamiones[i]->getPrecioCamion(),
                                                                temporalListaDeCamiones[i]->getMarcaCamion(),
                                                                temporalListaDeCamiones[i]->getModeloCamion(),
                                                                temporalListaDeCamiones[i]->getColorCamion());
               cantidadDeCamiones++;
            }//Fin for
            cout << "El camion fue eliminado exitosamente\n\n";
        }//fin else
    }
   
}

//Imprime los datos del Camion
void Camion::imprimir()
{
    cout<<setw(10)<<idCamion<<setw(15)<<modeloCamion<<setw(15)<<marcaCamion<<endl;
}


//.h
Código (cpp) [Seleccionar]
#ifndef CAMION_H
#define CAMION_H
#include <iostream>
using namespace std;
// Variables globales
class Camion
{
     private:
     int idCamion;
     int cilindrajeCamion;
     int nPuertasCamion;
     int anioCamion;
     double precioCamion;
     string marcaCamion, modeloCamion, colorCamion;
     
     public:
     Camion(int =0, int=0, int=0, int=0, double = 0.0, string = "", string = "", string = "");
     
     void setIdCamion(int);
     void setCilindrajeCamion(int);
     void setNPuertasCamion(int);
     void setanioCamion(int);
     void setPrecioCamion(double);
     void setMarcaCamion(string);
     void setModeloCamion(string);
     void setColorCamion(string);
     
     int getIdCamion() const;
     int getCilindrajeCamion() const;
     int getnPuertasCamion() const;
     int getanioCamion() const;
     string getMarcaCamion() const;
     string getModeloCamion() const;
     string getColorCamion() const;
     double getPrecioCamion() const;
     
     //Otros Metodos
     void ingresarCamion();
     void flistaDeCamiones();
     void imprimir();
     int buscarCamion(int);
     void modificarCamion();
     void eliminarCamion();
     
     private:
     Camion**listaDeCamiones;
     int Maximo;
     int cantidadDeCamiones;
     
};
#endif


//principal
Código (cpp) [Seleccionar]
#include <cstdlib>
#include <iostream>
#include "Camion.h"

using namespace std;

void menuCamiones();

int main(int argc, char *argv[])
{    
    menuCamiones();
   system("PAUSE");
   return EXIT_SUCCESS;
}

void menuCamiones()
{
    Camion camionOb;
    int opcion;
    do
    {
        system("cls");
        cout << "Menu\n"
             << "1.Desea ingresar un nuevo camion a la empresa\n"
             << "2. mostrar lista de Camiones\n";
        cout << "Elija una opcion: ";
        cin >> opcion;
         
        switch(opcion)
        {
        case 1:
             system("cls");
             camionOb.ingresarCamion();
             system("pause");
             break;
   
         case 2:
              system("cls");
              camionOb.flistaDeCamiones();
              system("pause");
         break;        
         
         case 3:
         break;
         
         default:
                 cout << "Esa opcion no existe.\n\n";
                 break;
        }
       
                 
    }while(opcion != 3);
}


Gracias.
#283
Te comparto una imagenes de como va quedando despues lo arreglare mejor

Cita de: x64Core en  4 Febrero 2014, 04:24 AMel array asignarle memoria al
momento de usarlo ( recorda liberarlo ) aunque hubiera sido bueno incializarlo en el contructor así en el destructor se libera la memoria
eso depende de como diseñes tu programa.

claro lo hare para liberar la memoria. gracias de nuevo.
#284
Ya está, te gradezco mucho por la ayuda y más por el tiempo que te tomaste créeme sea gradece mucho cuando estas trabado y alguien te ayuda. Saludos y mil gracias por la ayuda. y ahora entiendo lo que tratabas de decirme leeré sobre el extern y memoria dinámica para no tener este tipo de problemas. saludos y gracias.
#285
Aca esta la .h he estado trando de hacer lo que me dices como puedes ver.
Código (cpp) [Seleccionar]
#ifndef CAMION_H
#define CAMION_H
#include <iostream>
using namespace std;

extern Camion**listaDeCamiones;

// Variables globales
class Camion
{
     private:
     int idCamion;
     int cilindrajeCamion;
     int nPuertasCamion;
     int anioCamion;
     double precioCamion;
     string marcaCamion, modeloCamion, colorCamion;
     
     public:
     Camion(int =0, int=0, int=0, int=0, double = 0.0, string = "", string = "", string = "");
     
     void setIdCamion(int);
     void setCilindrajeCamion(int);
     void setNPuertasCamion(int);
     void setanioCamion(int);
     void setPrecioCamion(double);
     void setMarcaCamion(string);
     void setModeloCamion(string);
     void setColorCamion(string);
     
     int getIdCamion() const;
     int getCilindrajeCamion() const;
     int getnPuertasCamion() const;
     int getanioCamion() const;
     string getMarcaCamion() const;
     string getModeloCamion() const;
     string getColorCamion() const;
     double getPrecioCamion() const;
     
     //Otros Metodos
     void ingresarCamion();
     void listaDeCamiones();
     void imprmir();
     
};
#endif


y aca la cpp

Código (cpp) [Seleccionar]
#include "Camion.h"
#include <iostream>
#include <iomanip>
using namespace std;

    Camion**listaDeCamiones;
    const int Maximo =100;
    int cantidadDeCamiones =0;
 
Camion::Camion (int idCam, int cilindrajeCam, int puertasCam, int anioCam,
               double precioCam, string marcaCam, string modeloCam,
               string colorCam)
               {
                  idCamion = idCam;
                  cilindrajeCamion = cilindrajeCam;
                  nPuertasCamion = puertasCam;
                  anioCamion = anioCam;
                  precioCamion = precioCam;
                  marcaCamion = marcaCam;
                  modeloCamion = modeloCam;
                  colorCamion = colorCam;
               }
//Funciones set
void Camion::setIdCamion(int idCam)
{
    idCamion = idCam;
}

void Camion::setCilindrajeCamion(int cilindrajeCam)
{
    cilindrajeCamion = cilindrajeCam;
}

void Camion::setNPuertasCamion(int puertasCam)
{
    nPuertasCamion = puertasCam;
}

void Camion::setanioCamion(int anioCam)
{
    anioCamion = anioCam;
}

void Camion::setPrecioCamion(double precioCam)
{
    precioCamion = precioCam;
}

void Camion::setMarcaCamion(string marcaCam)
{
    marcaCamion = marcaCam;
}

void Camion::setModeloCamion(string modeloCam)
{
    modeloCamion = modeloCam;
}

void Camion::setColorCamion(string colorCam)
{
    colorCamion = colorCam;
}

//Funciones get
int Camion::getIdCamion() const
{
   return idCamion;
}

int Camion::getCilindrajeCamion() const
{
   return cilindrajeCamion;
}

int Camion::getnPuertasCamion() const
{
   return nPuertasCamion;
}

int Camion::getanioCamion()const
{
   return anioCamion;
}

double Camion::getPrecioCamion() const
{
      return precioCamion;
}

string Camion::getMarcaCamion() const
{
      return marcaCamion;
}

string Camion::getModeloCamion() const
{
      return modeloCamion;
}

string Camion::getColorCamion() const
{
      return colorCamion;
}

void Camion::ingresarCamion()
{
  Camion**listaDeCamiones = new Camion*[Maximo];// arreglo de 100
  if (cantidadDeCamiones < Maximo)
  {
                       
    system("cls");
    cout << "Ingrese los datos del camion\n";
    cout << "Ingrese el ID del camion: ";
    cin  >> idCamion;
   
    cout << "Ingrese la Marca del Camion: ";
    cin  >> marcaCamion;
   
    cout << "Ingrese el Modelo del camion: ";
    cin  >> modeloCamion;
   
    cout << "Ingrese el año del Camion: ";
    cin  >> anioCamion;
   
    cout << "Ingrese el cilindraje del camion: ";
    cin  >> cilindrajeCamion;
   
    cout << "Ingrese el numero de puertas: ";
    cin  >>  nPuertasCamion;
   
    cout << "Ingrese el color del camion: ";
    cin  >> colorCamion;
   
    cout << "Ingrese el presio del camion: ";
    cin  >> precioCamion;
   
    listaDeCamiones[cantidadDeCamiones] = new Camion(idCamion, cilindrajeCamion,
                                                     nPuertasCamion, anioCamion,
                                                     precioCamion, marcaCamion,
                                                     modeloCamion,colorCamion);
    cantidadDeCamiones++;
   
    cout << "Los datos del camion fueron ingresados correctamente\n\n";
  }
  else
  {
      system("cls");
      cout << "Ya no hay espacio disponible para mas camiones\n\n";
  }
}

void Camion::listaDeCamiones()
{
    if (cantidadDeCamiones==0)
    {
      system("cls");
      cout<<"No se a registrado ninguna Camion todavía"<<endl;
      }
      else
      {
          cout<<"..:::Lista de Camiones:::.."<<endl<<endl;
          cout << setw(10)<<"Id Camion"<<setw(15)<<"Modelo"<<setw(15)<<"marca"<<endl;
          cout<<"================================================="<<endl;
                 
          //Imprimmir todas las personas almacenadas en el arreglo de personas
          for (int i=0; i<cantidadDeCamiones;i++)
          {
           listaDeCamiones[i]->imprmir();
          }
          cout<<endl<<"*******Fin de la lista **********"<<endl<<endl;
          }
}
/*
void imprmir()
{
    cout<<setw(10)<<idCamion<<setw(15)<<modeloCamion<<setw(15)<<marcaCamion<<endl;
}*/
#286
//entonce quedaria asi la camion.cpp

Código (cpp) [Seleccionar]
#include "Camion.h"
#include <iostream>
using namespace std;
   
    extern const int Maximo =100;
    extern Camion**listaDeCamiones = new Camion*[Maximo];// arreglo de 100
    extern int cantidadDeCamiones =0;// controla la cantidad de camiones


y en la .h
Código (cpp) [Seleccionar]
#ifndef CAMION_H
#define CAMION_H
#include <iostream>
using namespace std;

int Maximo;
Camion**listaDeCamiones = new Camion*[Maximo];
int cantidadDeCamiones;

#287
Cita de: x64Core en  4 Febrero 2014, 02:44 AM
Declaralas globales y las inicializas/creas memoria dinamica en alguna funcion.

Me Disculpo no soy muy bueno pero las declaro en la de encabezado o en la de implementación? y cuales variables debo de inicializar y como. No pido código para nada solo una idea. Gracias de antemano.
#288
si tienes razon ya ratos me di cuenta de que si lo hacia dentro de la funcion no da error
tienes toda la razon

pero al crear otra funcion que me muestre los datos del camion; que se guardaron en memoria como los saco para mostrarlos en otra funcion.

Código (cpp) [Seleccionar]
void Camion::ingresarCamion()
   {
      const int Maximo = 100;
      Camion**listaDeCamiones = new Camion*[Maximo];// arreglo de 100
      int cantidadDeCamiones=0;// controla la cantidad de camiones

     if (cantidadDeCamiones < Maximo)
     {
       //Código de las entradas por teclado que capturaran lista de camiones
       cout << "Ingrese los datos del camion\n";
       cout << "Ingrese el ID del camion: ";
       cin  >> idCamion;
   
       cout << "Ingrese la Marca del Camion: ";
       cin  >> marcaCamion;
   
   listaDeCamiones[cantidadDeCamiones] = new Camion(idCamion, cilindrajeCamion,
                                                        nPuertasCamion, anioCamion,
                                                        precioCamion, marcaCamion,
                                                        modeloCamion,colorCamion);
       cantidadDeCamiones++;
   
       cout << "Los datos del camion fueron ingresados correctamente\n\n";
     }
     else
     {
         system("cls");
         cout << "Ya no hay espacio disponible para mas camiones\n\n";
     }



ya que cantidadDeCamiones quedara en la otra funcion al igual que lista de camiones.

Código (cpp) [Seleccionar]
void Camion::listaDeCamiones()
{
if (cantidadDeCamiones==0)
             {
               system("cls");
               cout<<"No se a registrado ninguna Camion todavía"<<endl;
             }
             else
             {
                 cout<<"..:::Lista de Camiones:::.."<<endl<<endl;
                 cout<<setw(10)<<"idCamion"<<endl;
                 cout<<"================================================="<<endl;
                 
                 //Imprimmir todas los camiones almacenadas en el arreglo de camiones
                 for (int i=0; i<cantidadDeCamiones;i++)
                 {
                     listaDeCamiones[i]->print();
                 }
                 cout<<endl<<"*******Fin de la lista **********"<<endl<<endl;
             }

}


esas variables serian declaradas dentro de la funcion
#289
Cita de: x64Core en  4 Febrero 2014, 02:07 AM
¿Son esas sentencias escritas dentro de alguna funcion?

ya te entendi si exactamente.
#290
No son variables dentro del archivo de encabezado (.h) las cuales según yo pretendo llamar en camion.cpp ya que las declaro como globales