Está en la página 1de 13

EJEMPLO (usar funciones y procedimientos)

Elaborar un programa que pida el ingreso de: sueldo Bruto y el tipo de empleado
(A/B), edad. Determinar el sueldo Neto, si se considera que hay un % descuento, el
cual se aplica al sueldo Bruto, según la tabla siguiente:

Tipo empleado
A B
Edad

<30 0.10 0.20

>=30 y <50 0.15 0.25

>=50 0.30 0.35

Validar el ingreso de los datos:

- Sueldo Bruto >0


- Tipo de empleado (A/B)
- Edad >=18 y <=60

Emplear un MENU, para el ingreso de “n” empleados

----MENU PRINCIPAL----

1. Procesar
2. Salir

----------------------------

----SUB MENU PROCESAR----

1. Registrar
2. Reportar
3. Volver

----------------------------

Por cada empleado ingresado mostrar:

● Sueldo Bruto
● Monto de descuento = % descuento x Sueldo Bruto
● Sueldo Neto = Sueldo Bruto - Monto de descuento

En la opción reportar mostrar:


● Cantidad de empleados de Tipo A
● Cantidad de empleados con edad entre 30 y 50
● Total de Sueldo Neto de empleado Tipo B
● Promedio de Sueldo de empleado de tipo A

LecturaDatos.h
//librería: LecturaDatos.h
#include<iostream>
using namespace std;
int leedatoe()
{ int dato;
cin>>dato;
return dato;
}
float leedatof()
{ float dato;
cin>>dato;
return dato;
}
double leedatod()
{ double dato;
cin>>dato;
return dato;
}
char leedatoc()
{ char dato;
cin>>dato;
return dato;
}
string leedatos()
{ string dato;
cin>>dato;
return dato;
}
—--------------
ConvierteDatos.h
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

float leedatofPositivos()
{ float dato;
string cadIngreso;
cin>>cadIngreso;
if (isalpha(cadIngreso[0]))
{ dato = -5;
cout << "Error. Es letra.\n";
}
else
{ dato = atof(cadIngreso.c_str());
if(dato < 0)
cout << "Error, debe ser un numero positivo.\n";
}
return dato;
}
double leedatodPositivos()
{ double dato;
string cadIngreso;
cin>>cadIngreso;
if (isalpha(cadIngreso[0]))
{ dato = -5;
cout << "Error. Es letra.\n";
}
else
{ dato = strtod(cadIngreso.c_str(),NULL);
if(dato < 0)
cout << "Error, debe ser un numero positivo.\n";
}
return dato;
}
int leedatoePositivos()
{ int dato;
string cadIngreso;
cin >> cadIngreso;
if (isalpha(cadIngreso[0]))
{ dato = -5;
cout << "Error. Es letra.\n";
}
else
{ dato = atof(cadIngreso.c_str());
if(dato < 0)
cout << "Error, debe ser un numero positivo.\n";
}
return dato;
}
char leedatocLetras()
{ char dato;
cin >>dato;
if (isalpha(dato))
{ dato =toupper(dato);
}
else
{ cout<<"Error. No es letra \n";
dato='Z'; //letra posible incorrecta
}
return dato;
}
—--------------------------------------------------------------------------------------------------------------------
Empresa.cpp
—------------------------------------------------------------------------------------------------------------------
#include<iostream>

#include<stdlib.h> //atoi, atof


#include "LecturaDatos.h"

#include "ConvierteDatos.h"

using namespace std;

//VARIABLES GLOBALES

int canEmpA=0, canEmp30_50=0;

double totSNEmpB=0,totSNEmpA=0;

double descuento (int edad, char cat)

{ double d;

switch(cat)

{ case 'A': if(edad<30)

d=0.10;

else if(edad<50)

d=0.15;

else

d=0.20;

break;

case 'B': if(edad<30)

d=0.20;

else if(edad<50)

d=0.25;

else

d=0.35;

break;

return d;
}

void registrar()

{ int edad;

char tipo;

double SB;

//validando que el sueldo bruto sea >0

do

{ cout<<"Ingrese sueldo Bruto : ";

SB=leedatodPositivos(); //captando como double

if(SB<0)

cout<<"\tError. Debe ingresar Sueldo Bruto > 0 \n";

}while(SB<0) ;

//validando que la categoria sea A O B

do

{ cout<<"Ingrese tipo de empleado (A/B) : ";

tipo=leedatocLetras(); //captando como char

if(tipo!='A'&&tipo!='B')

cout<<"\tError. Debe ingresar tipo de empleado A o B \n";

}while(tipo!='A'&&tipo!='B');

//validando que la edad >=18 y <=70

do

{ cout<<"Ingrese edad : ";

edad=leedatoePositivos(); //captando como int

if(edad<18||edad>70)

cout<<"\tError. Edad fuera de rango. Debe estar entre >=18 y <=70 \n";
}while(edad<18||edad>70);

//Completar Calculo del reporte

void reportar()

{ //completar

void salir()

{ cout<< "Adios!!!\n";

void proceso() //SUBMENU

{ int op;

do

{ cout<<endl<<endl;

cout<<"::::::::::::::::::::\n";

cout<<" SUB MENU - PROCESAR \n";

cout<<"::::::::::::::::::::\n";

cout<<":: 1. Registrar ::\n";

cout<<":: 2. Reportar ::\n";

cout<<":: 3. Volver ::\n";

cout<<"::::::::::::::::::::\n";

//validando la opción

do
{ cout<<"Ingrese opción : ";

op=leedatoePositivos(); // si es negativo devuelve -5, caso contrario el mismo valor que se


ingrese

if(op<1||op>3)

cout<<"\tError. Vuelva a ingresar la opción \n";

}while(op<1||op>3);

//Evaluamos cada opción

switch(op)

{case 1: registrar();

break;

case 2: reportar();

break;

case 3: cout<<"Volviendo al menú principal \n";

}//switch

} while(op!=3);

int menu() //menú principal

{ char rpta;

int opc;

cout<<endl<<endl;

cout<<"::::::::::::::::::::\n";

cout<<" MENU PRINCIPAL \n";

cout<<"::::::::::::::::::::\n";

cout<<":: 1. Procesar ::\n";

cout<<":: 2. Salir ::\n";


cout<<"::::::::::::::::::::\n";

//validando la opción

do

{ cout<<"Ingrese opción : ";

opc=leedatoePositivos(); // si es negativo devuelve -5, caso contrario el mismo valor que se


ingrese

if(opc<1||opc>2)

cout<<"\tError. Vuelva a ingresar la opción \n";

}while(opc<1||opc>2);

//Evaluamos cada opción

switch(opc)

{ case 1: proceso();

break;

case 2: do

{ cout<<"\t\tDesea salir del programa (S/N) ? : ";

rpta=leedatocLetras(); // devuelve 'Z' cuando no es letra, caso contrario el mismo dato

}while(rpta!='S'&&rpta!='N'); //opc variable global

if(rpta=='S')

salir();

else

menu(); //RECURSIVIDAD

break;

return opc;
}

int main()

{ int rpta;

setlocale(LC_CTYPE,"Spanish"); // idioma español

system("color 9F");

do

{ rpta=menu();

}while(rpta!=2); //2-salir

system("pause") ;

return 0;

También podría gustarte