25-02-2013, 17:01
Hola, bueno la cosa me tira violación de segmento cuando cargo la chapa y ya ni idea que es...
Me deja poner un valor y ahí me salta la violación y me quede sin saber que hacer
Ayudas?
gracia!
Me deja poner un valor y ahí me salta la violación y me quede sin saber que hacer
Ayudas?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
typedef struct CAMIONES{
char* marca;
char* modelo;
char* n_chapa;
int interno;
int cantidad_viajes;
}struct_camion;
class VEHICULO{
private:
char *Marca;
char *Modelo;
char *Numero_chapa;
int Anio_fabricacion;
public:
VEHICULO(){};
~VEHICULO();
void set_modelo(char *v_modelo);
void set_marca(char *v_marca);
void set_n_chapa(char *v_chapa);
void set_anio_fabricacion(int v_anio);
char* get_marca(void);
char* get_modelo(void);
char* get_n_chapa(void);
int get_anio_fabricacion(void);
};
class CAMION: public VEHICULO{
private:
unsigned int interno;
unsigned int cantidad_viajes;
public:
void set_camion(struct_camion *);
struct_camion* get_camion(void);
void mirar_todo(void);
CAMION(){};
~CAMION(){};
};
//DECLARO FUNCIONES DE CLASE VEHICULO.
//Seteo de objeto perteneciente a clase vehículo - SET
void VEHICULO::set_marca(char *v_marca){
int tamano;
tamano = strlen(v_marca);
Marca = new char[tamano+1];
strcpy(Marca,v_marca);
}
void VEHICULO::set_modelo(char *v_modelo){
int tamano;
tamano = strlen(v_modelo);
Modelo = new char[tamano+1];
strcpy(Modelo,v_modelo);
}
void VEHICULO::set_n_chapa(char *v_chapa){
int tamano;
tamano = strlen(v_chapa);
Numero_chapa = new char[tamano+1];
strcpy(Numero_chapa,v_chapa);
}
void VEHICULO::set_anio_fabricacion(int v_anio){
Anio_fabricacion = v_anio;
}
//Seteo de objeto perteneciente a clase vehículo - GET
char* VEHICULO:: get_marca(void){
return(Marca);
}
char* VEHICULO:: get_n_chapa(void){
return(Numero_chapa);
}
char* VEHICULO:: get_modelo(void){
return(Modelo);
}
int VEHICULO:: get_anio_fabricacion(void){
return(Anio_fabricacion);
}
VEHICULO:: ~VEHICULO(){
delete [] (Numero_chapa);
delete [] (Modelo);
delete [] (Marca);
}
// Funciones clase CAMION
void CAMION::set_camion(struct_camion *nuevo_camion){
set_marca(nuevo_camion->marca);
set_modelo(nuevo_camion->modelo);
set_n_chapa(nuevo_camion->n_chapa);
if((nuevo_camion->interno>=0)&&(nuevo_camion->interno<=9999)){
interno = nuevo_camion->interno;
}
cantidad_viajes = 0;
}
struct_camion* CAMION::get_camion(void){
struct_camion *aux;
aux->marca = get_marca();
aux->modelo = get_modelo();
aux->n_chapa = get_n_chapa();
aux->interno = interno;
aux->cantidad_viajes = cantidad_viajes;
return(aux);
}
void CAMION::mirar_todo(void){
cout<<"Marca: "<<get_marca() << "Modelo: "<<get_modelo() << "Chapa: "<<get_n_chapa() << "Interno: "<<interno<< "Cantidad de viajes: "<<cantidad_viajes <<endl;
}
int main (void){
struct_camion camion_nuevo;
int cant_camiones = 0;
CAMION camiones[2];
while(cant_camiones<2){
cout<<"Ingrese marca"<<endl;
cin>>camion_nuevo.marca;
cout<<"Ingrese modelo"<<endl;
cin>>camion_nuevo.modelo;
cout<<"Ingrese chapa: "<<endl;
cin>>camion_nuevo.n_chapa;
cout<<"Ingrese interno: "<<endl;
cin>>camion_nuevo.interno;
cout<<"Ingrese cantidad de viajes: "<<endl;
cin>>camion_nuevo.cantidad_viajes;
camiones[cant_camiones].set_camion(&camion_nuevo);
cant_camiones++;
}
cout<<"Ya cargue todos los camiones"<<endl;
for(int i=0;i<2;i++){
camiones[i].mirar_todo();
}
getchar();
return(0);
}
gracia!