[C con Clase] Programa de ejemplo (control de gastos) código fuente para aprendizaje

Asdrúbal Iván Suárez Rivera asdrubal.ivan.suarez.rivera en gmail.com
Dom Sep 16 19:21:21 CEST 2012


El 16 de septiembre de 2012 08:03, Oscar Aparicio Holgado <
enigma-si en hotmail.com> escribió:

>   He visto gente iniciada en C++ nueva en la lista de correo; incluyo
> este programa sencillo (es mi primer programa y tendrá mil maneras de
> mejorarlo) pero puede valer para que vean a través de ejemplos como he
> logrado lo que el programa básicamente hace.
>
> Estableces un sueldo, conceptos de gastos (ejemplo : coche, luz, comida
> etc) y luego estableces los valores de gastos de cada cosa, luego a través
> del menú te ofrece un mini informe.
>
> Espero lo disfruten, se aceptan sugerencias.
>
> un saludo.
>
>


Para quienes estén aprendiendo es chévere. Y si lo pones en un repositorio
git? En github o bitbucket?

>
>  #include <iostream>
>
> using namespace std;
>
> class gastos
> {
>     private:
>
>     int sueldo;
>     int vgastos;
>     int ng;
>
>     struct gasto {
>         char concepto[50];
>         int valor;
>     };
>
>     public:
>
>     gasto losgastos[9];
>
>     void menu();
>     void establecerg();
>     void establecervg();
>     void informe();
>     void establecesueldo(int);
>     int sueldoacero();
>     int gastosacero();
> };
>
> void gastos::menu()
> {
> char eleccion;
>
> cout << "Elige la opci\xa2n :" << endl;
> cout << "---------------------" << endl;
> cout << "1.- Establecer sueldo." << endl;
> cout << "2.- Establecer conceptos de gastos." << endl;
> cout << "3.- Establecer valores de gastos." << endl;
> cout << "4.- Mostrar informe." << endl;
> cout << "5.- Salir del programa." << endl;
>
> cout << endl;
>
> cin >> eleccion;
>
>         switch (eleccion)
>             {
>             case '1':
>                 int valor;
>                 cout << "Introduce el valor del sueldo en euros : "; cin
> >> valor; cout << endl;
>                 establecesueldo(valor);
>                 menu();
>                 break;
>             case '2':
>                 if(sueldo == 0)
>                 {
>                     cout << "Error, debes establecer un sueldo primero.\n";
>                     menu();
>                     break;
>                 }
>                 else
>                 {
>                     establecerg();
>                     losgastos[0].valor = 1;
>                     menu();
>                     break;
>                 }
>
>             case '3':
>                 if(losgastos[0].valor == 0)
>                 {
>                     cout << "Error, debes establecer un concepto de gastos
> primero.\n";
>                     cout << losgastos[0].valor << endl;
>                     menu();
>                     break;
>                 }
>                 else
>                 {
>                     establecervg();
>                     menu();
>                     break;
>                 }
>
>             case '4':
>                 if(sueldo == 0)
>                 {
>                     if(losgastos[0].valor == 0)
>                     {
>                         cout << "Error, debes establecer un sueldo,
> conceptos y valores primero.\n";
>                         menu();
>                         break;
>                     }
>                 }
>                 else
>                 {
>                     if(losgastos[0].valor == 0 || losgastos[0].valor == 1)
>                     {
>                         cout << "Error, debes establecer un sueldo,
> conceptos y valores primero.\n";
>                         menu();
>                         break;
>                     }
>                     informe();
>                     menu();
>                     break;
>                 }
>
>             case '5':
>                 return;
>             default:
>                 cout << "Escoge una opci\xa2n de las que ofrece el
> men\xa3..." << endl;
>                 cout << endl;
>                 menu();
>                 break;
>             }
> }
>
> void gastos::establecesueldo(int a)
> {
>     sueldo = a;
> }
>
> void gastos::establecerg()
> {
>     cout << "\xa8" << "Cu\xa0ntos gastos quieres declarar? escoje un
> n\xa3mero del 1 al 10 : "; cin >> ng;
>
>     if(ng <= 10)
>         {
>             int i, j;
>             for(i = 0, j = 1; i < ng; i++, j++)
>             {
>             cout << "Establece un concepto de gasto (" << j << "/10) : ";
> cin >> losgastos[i].concepto; cout << endl;
>             }
>         }
>     else
>     {
>         cout << "Error, debes introducir un numero del 1 al 10...\n";
>         establecerg();
>     }
> }
>
> void gastos::establecervg()
> {
>     int i;
>     for(i = 0; i < ng; i++)
>     {
>         cout << "Establece valor de gasto en euros para " <<
> losgastos[i].concepto << " : "; cin >> losgastos[i].valor; cout << endl;
>     }
>     cout << endl;
> }
>
> void gastos::informe()
> {
>     cout << "Gastos de este mes :" << endl;
>     cout << "--------------------" << endl;
>     cout << endl;
>
>     int i;
>     for(i = 0; i < ng; i++)
>     {
>         cout << losgastos[i].concepto; cout << " : "; cout <<
> losgastos[i].valor; cout << endl;
>     }
>
>     vgastos = 0;
>
>     for(i = 0; i < ng; i++)
>     {
>         vgastos += losgastos[i].valor;
>     }
>
>     cout << endl;
>     cout << "Sueldo : " << sueldo << endl;
>     cout << "Gastos : " << vgastos << endl;
>     cout << "Te sobra : " << (sueldo - vgastos) << endl;
>     cout << endl;
>
> }
>
> int gastos::sueldoacero()
> {
>     return sueldo = 0;
>     losgastos[0].valor = 0;
> }
>
> int gastos::gastosacero()
> {
>     return losgastos[0].valor = 0;
> }
>
> int main()
> {
>     gastos objetodeclase;
>
>     objetodeclase.sueldoacero();
>     objetodeclase.gastosacero();
>
>     objetodeclase.menu();
>
>     return 0;
> }
>
>
> *Oscar*
> Administrador de sistemas Linux.
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
Asdrúbal Iván Suárez Rivera

*Si quieres aprender, enseña. *Marco Tulio Cicerón.
*
*
*¿Tienes twitter?*
*Sígueme: @asdrubalivan*
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120916/1f3ef5ba/attachment.html>


Más información sobre la lista de distribución Cconclase