Ayuda con programacion en C++

Iniciado por Diego_MPrada, 12 Octubre 2016, 18:16 PM

0 Miembros y 1 Visitante están viendo este tema.

Diego_MPrada

Buenas Tengo Este Codigo que me genera una violacion de segmento y de verdad no se por que. espero alguien me pueda ayudar. Gracias


#include<iostream>
#include<cstring>

using namespace std;

class Empleado{
private:
string apellido;
string nombre;
int dias;
float sueldo;
float bono;

public:
Empleado(){} //constructor por defecto
~Empleado(){} //Destructor

void imprimir_info();

virtual void set_nombre(string n){nombre = n;}
virtual void set_apellido(string a){apellido = a;}
virtual void set_dias(int d){dias = d;}
virtual void set_sueldo(float s){sueldo = s;}
void set_bono(float b){bono = b;}
void calcular_bono(float s, float p);

const string get_nombre(){return nombre;}
const string get_apellido(){return apellido;}
const int get_dias(){return dias;}
const float get_sueldo(){return sueldo;}
const float get_bono(){return bono;}
};
void Empleado::imprimir_info(){
cout<<"\nNombre: "<<nombre<<"\n";
cout<<"Apellido: "<<apellido<<"\n";
cout<<"dias de trabajo: "<<dias<<"\n";
cout<<"sueldo: "<<sueldo<<"\n";
}

class Mesonero : public virtual Empleado{
private:
int Pizzas;
int bono1;
public:
Mesonero(){}
~Mesonero(){}

void imprimir_mesonero();
void set_pizzas(int p){Pizzas = p;}
void set_bono1(int b){bono1 = b;}

const int get_pizzas(){return Pizzas;}
const int get_bono1(){return bono1*100;}
};
void Mesonero::imprimir_mesonero(){
cout<<"Pizzas vendidas en el mes: "<<get_pizzas()<<"\n";
cout<<"Bono por ser Mesonero: "<<get_bono1()<<endl;
}

class Supervisor : public virtual Empleado{
public:
Supervisor(){}
~Supervisor(){}
void imprimir_supervisor();
void calcular_bono(float s){
set_bono(s*0.20);
}
};
void Supervisor::imprimir_supervisor(){
cout<<"Bono por ser Supervisor: "<<get_bono()<<endl;
}

class Supervisor_Mesonero : public Mesonero, public Supervisor{
public:
Supervisor_Mesonero(){}
~Supervisor_Mesonero(){}

void imprimir_supervisor_mesonero();

};
void Supervisor_Mesonero::imprimir_supervisor_mesonero(){
cout<<"Bono por ser Mesonero-Supervisor: "<<get_bono() + get_bono1()<<endl;
}

int main(){

string aux1;
int aux2;
int a, b, c;
float f;

do{
cout<<"Ingrese la cantidad de Mesoneros que posee: ";
cin>>a;
cout<<"Ingrese la cantidad de Supervisores que posee: ";
cin>>b;
cout<<"Ingrese la cantidad de Supervisores-Mesoneros que posee: ";
cin>>c;
if(((a+b+c)<0) ||((a+b+c)>10))
cout<<"Error, Muchos Empleados, Limite de 10"<<endl;

}while(((a+b+c)<0) ||((a+b+c)>10));

Mesonero m[a];
Supervisor s[b];
Supervisor_Mesonero x[c];
int i;

for(i=0 ; i<a ; i++){
cout<<"Nombre Mesonero "<<i+1<<": ";
cin>>aux1;
m[i].set_nombre(aux1);
cout<<"Apelldo Mesonero "<<i+1<<": ";
cin>>aux1;
m[i].set_apellido(aux1);
do{
cout<<"Dias trabajados del Mesonero "<<i+1<<": ";
cin>>aux2;
if((aux2<0) || (aux2>10))
cout<<"Error de Validacion de dias"<<endl;
}while((aux2<0) || (aux2>10));
m[i].set_dias(aux2);
cout<<"Sueldo del Mesonero "<<i+1<<": ";
cin>>f;
m[i].set_sueldo(f);
cout<<"Cantidad de pizzas vendidas del mesonero "<<i+1<<": ";
cin>>aux2;
m[i].set_pizzas(aux2);
m[i].set_bono1(m[i].get_pizzas());
}

for(i=a ; i<a+b ; i++){
cout<<"Nombre Supervisor "<<(i+1)-i<<": ";
cin>>aux1;
s[i].set_nombre(aux1);
cout<<"Apelldo Supervisor "<<(i+1)-i<<": ";
cin>>aux1;
s[i].set_apellido(aux1);
do{
cout<<"Dias trabajados del Supervisor "<<(i+1)-i<<": ";
cin>>aux2;
if((aux2<0) || (aux2>10))
cout<<"Error de Validacion de dias"<<endl;
}while((aux2<0) || (aux2>10));
s[i].set_dias(aux2);
cout<<"Sueldo del Supervisor "<<(i+1)-i<<": ";
cin>>f;
s[i].set_sueldo(f);
s[i].calcular_bono(s[i].get_sueldo());
}
for(i=b ; i<b+c ; i++){
cout<<"Nombre del Supervisor-Mesonero "<<(i+1)-i<<": ";
cin>>aux1;
x[i].set_nombre(aux1);
cout<<"Apelldo del Supervisor-Mesonero "<<(i+1)-i<<": ";
cin>>aux1;
x[i].set_apellido(aux1);
do{
cout<<"Dias trabajados del Supervisor-Mesonero "<<(i+1)-i<<": ";
cin>>aux2;
if((aux2<0) || (aux2>10))
cout<<"Error de Validacion de dias"<<endl;
}while((aux2<0) || (aux2>10));
x[i].set_dias(aux2);
cout<<"Sueldo del Supervisor-Mesonero "<<(i+1)-i<<": ";
cin>>f;
x[i].set_sueldo(f);
cout<<"Cantidad de pizzas vendidas del Supervisor-Mesonero "<<(i+1)-i<<": ";
cin>>aux2;
x[i].set_pizzas(aux2);
x[i].set_bono1(x[i].get_pizzas());
x[i].calcular_bono(x[i].get_sueldo());
}
for(i=0 ; i<a ; i++){
m[i].imprimir_info();
m[i].imprimir_mesonero();
}
for(i=a ; i<b ; i++){
s[i].imprimir_info();
s[i].imprimir_supervisor();
}
for(i=b ; i<c ; i++){
x[i].imprimir_info();
x[i].imprimir_mesonero();
x[i].imprimir_supervisor();
x[i].imprimir_supervisor_mesonero();
}

return 0;
}