[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