#include <iostream>
#include <string>
#include <vector>
#include <cctype>
using namespace std;
struct Familia{
string nombre;
float consumo[4];
float totalKw;
float totalPesos;
};
void introducirDatos( Familia &f );
void imprimir( vector<Familia> v );
float sumaKw( float a[], int n );
float totalPesos( float p[], int n );
void maximoConsumo( vector<Familia> v );
float totalConsumo( vector<Familia> v );
int main()
{
Familia f = { "", 0 };
vector<Familia> v;
char opcion;
do{
introducirDatos( f );
f.totalKw = sumaKw( f.consumo, 4 );
f.totalPesos = totalPesos( f.consumo, 4 );
v.push_back( f );
cout << "\nAñadir un nuevo registro (S/n): ";
cin >> opcion;
opcion = toupper( opcion );
}while( opcion == 'S' );
imprimir( v );
return 0;
}
void introducirDatos( Familia &f )
{
cout << "\nFamilia: ";
cin >> f.nombre;
for( int i = 0; i < 4; i++ ) {
cout << "KW mes " << i + 1 << ": ";
cin >> f.consumo[i];
}
}
void imprimir( vector<Familia> v )
{
cout << "\nFamilias Enero Febero Marzo Abril Total Kw Total Pesos"
<< "\n============================================================";
vector<Familia>::size_type sz = v.size();
for( unsigned i = 0; i < sz; i++ ) {
cout << "\n"
<< v[i].nombre << " "
<< v[i].consumo[0] << " "
<< v[i].consumo[1] << " "
<< v[i].consumo[2] << " "
<< v[i].consumo[3] << " "
<< v[i].totalKw << " "
<< v[i].totalPesos;
}
cout << "\n\nFamilia o familias con mas consumo:"
<< "\nFamilias Consumo"
<< "\n===================";
maximoConsumo( v );
cout << "\n\nTotal consumo de las familias: " << totalConsumo( v )
<< endl;
}
float sumaKw( float a[], int n )
{
float suma = 0.0;
for( int i = 0; i < n; i++ )
suma += a[i];
return suma;
}
float totalPesos( float p[], int n )
{
float pesos = 0.0;
for( int i = 0; i < n; i++ ) {
if( p[i] < 174 )
pesos += p[i] * 400.00;
else
pesos += p[i] * 550.00;
}
return pesos;
}
void maximoConsumo( vector<Familia> v )
{
float max;
vector<Familia>::size_type sz = v.size();
for( unsigned i = 0; i < sz; i++ ) {
if (i == 0 || v[i].totalKw > max) {
max = i;
}
}
cout << "\n"
<< v[max].nombre << " "
<< v[max].totalKw;
}
float totalConsumo( vector<Familia> v )
{
float total = 0.00;
vector<Familia>::size_type sz = v.size();
for( unsigned i = 0; i < sz; i++ ) {
total += v[i].totalKw;
}
return total;
}