#include <iostream>
#include "Casa.h"
#include "Facturacion.h"
using namespace std;
void validar(Facturacion *obj, int pos)
{
double costo = (obj->getVector(pos)->getKilovatios() * 3);
double descuento = (obj->getVector(pos)->getKilovatios() * obj->getVector(pos)->getCosto()) * 0.08;
if (obj->getVector(pos)->getKilovatios() > 350)
{
cout << "Se le cobrara el triple al costo por kilovatios" << endl;
cout << "Nuevo costo: $" << costo << endl;
}
else
{
cout << "El municipio le ha subsidiado un 0.8% al subtotal" << endl;
cout << "Descuento: $" << descuento << endl;
}
}
void mostrarVector(Facturacion *obj)
{
for (int i = 0; i < obj->getTamano(); i++)
{
cout << "Nomenclatura: " << obj->getVector(i)->getNomenclatura() << endl;
cout << "Kilovatios consumidos: " << obj->getVector(i)->getKilovatios() << endl;
cout << "Costo basico: $" << obj->getVector(i)->getCosto() << endl;
validar(obj, i);
cout << "Subtotal: " << obj->getVector(i)->getSubtotal() << endl << endl;
}
}
void llenar(Casa *cas)
{
string nom;
int kil, cos;
cout << "Digite nomenclatura de la casa" << endl;
cout << ">> ";
cin >> nom;
cas->setNomenclatura(nom);
cout << "Digite kilovatios consumidos de la casa" << endl;
cout << ">> ";
cin >> kil;
cas->setKilovatios(kil);
cout << "Digite costo basico por kilovatio" << endl;
cout << ">> ";
cin >> cos;
cas->setCosto(cos);
}
int main(void)
{
Facturacion *obj = new Facturacion();
Casa *cas;
int numeroElementos;
cout << "Digite tamano del Vector" << endl;
cout << ">> ";
cin >> numeroElementos;
obj->setTamano(numeroElementos);
obj->crearVector();
for (int i = 0; i < obj->getTamano(); i++)
{
cas = new Casa();
cout << "Llene la informacion de la casa " << i << endl;
llenar(cas);
obj->setVector(i, cas);
}
obj->calcularSubtotal();
mostrarVector(obj);
}
#ifndef CASA_H
#define CASA_H
#include <iostream>
using namespace std;
class Casa
{
public:
Casa();
virtual ~Casa();
void setNomenclatura(string val);
string getNomenclatura();
void setKilovatios(int val);
int getKilovatios();
void setCosto(int val);
int getCosto();
void setSubtotal(double val);
double getSubtotal();
protected:
private:
string nomenclatura;
int kilovatios;
int costo;
double subtotal;
};
#endif
#include "Casa.h"
Casa::Casa()
{
nomenclatura = "";
kilovatios = 0;
costo = 0;
subtotal = 0;
}
Casa::~Casa()
{
}
void Casa::setNomenclatura(string val)
{
nomenclatura = val;
}
string Casa::getNomenclatura()
{
return nomenclatura;
}
void Casa::setKilovatios(int val)
{
kilovatios = val;
}
int Casa::getKilovatios()
{
return kilovatios;
}
void Casa::setCosto(int val)
{
costo = val;
}
int Casa::getCosto()
{
return costo;
}
void Casa::setSubtotal(double val)
{
subtotal = val;
}
double Casa::getSubtotal()
{
return subtotal;
}
#ifndef FACTURACION_H
#define FACTURACION_H
#include <iostream>
using namespace std;
class Facturacion
{
public:
Facturacion();
virtual ~Facturacion();
void crearVector();
void setTamano(int n);
int getTamano();;
void setVector(int pos, Casa *n);
Casa *getVector(int pos);
void subsidioMunicipio(int pos);
void cobroExtraordinario(int pos);
void calcularSubtotal();
protected:
private:
int tamano;
Casa *vector;
};
#endif
#include "Facturacion.h"
Facturacion::Facturacion()
{
tamano = 0;
vector = NULL;
}
Facturacion::~Facturacion()
{
}
void Facturacion::crearVector()
{
vector = new Casa[tamano];
}
void Facturacion::setTamano(int n)
{
tamano = n;
}
int Facturacion::getTamano()
{
return tamano;
}
void Facturacion::setVector(int pos, Casa* n)
{
vector[pos] = *n;
}
Casa *Facturacion::getVector(int pos)
{
return &vector[pos];
}
void Facturacion::subsidioMunicipio(int pos)
{
double descuento = (getVector(pos)->getKilovatios() * getVector(pos)->getCosto()) * 0.08;
double resultado = (getVector(pos)->getKilovatios() * getVector(pos)->getCosto()) - descuento;
getVector(pos)->setSubtotal(resultado);
}
void Facturacion::cobroExtraordinario(int pos)
{
double resultado;
resultado = getVector(pos)->getKilovatios() * (getVector(pos)->getCosto() * 3);
getVector(pos)->setSubtotal(resultado);
}
void Facturacion::calcularSubtotal()
{
for (int i = 0; i < getTamano(); i++)
{
if (getVector(i)->getKilovatios() > 350)
{
cobroExtraordinario(i);
}
else
{
subsidioMunicipio(i);
}
}
}