Sie sind auf Seite 1von 6

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA

PROGRAMACIÓN DE ALGORITMOS–
Sistemas Informáticos y Computación
Modalidad Abierta y a Distancia
Periodo: Octubre 2015–Febrero 2016
Tercer Ciclo

Estudiante: Torres Chacón Byron Alejandro


Nro. de Cédula: 0502433972
Correo(s): alexmetalyviolencia@hotmail.com , Byron.torres@tcs.com
Calificación que cree merecer: 4 / 4 pts.

Desarrollo de la solución (CODIGO .JAVA)

package batorres2_.impuestorenta.java;

import java.util.Scanner;
import java.util.InputMismatchException;
import java.text.DecimalFormat;//para poder mostrar double con 2 decimales.

public class Batorres2_ImpuestoRentaJava {

public static void main(String[] args) {


//declaración e inicialización de variables
double baseRenta = 10800;
int noFacturas=0;
boolean validadorEntero=true;
boolean validadorDouble=true;
double totalVivienda, totalEducacion, totalSalud, totalAlimentacion, totalVestimenta, totalVarios, granTotal,promedioSalud,
promedioAnual,valorMayor;
double deducibleVivienda, deducibleEducacion, deducibleSalud, deducibleAlimentacion, deducibleVestimenta,deducibleTotal,
impuestoRenta, facturaMenor;
int posicionMenor,posicionMayor;
String rubroMayor;
totalVivienda = totalEducacion = totalSalud = totalAlimentacion = totalVestimenta = totalVarios = granTotal = promedioSalud =
impuestoRenta = valorMayor = 0;
posicionMayor=0;

Scanner scanner = new Scanner(System.in);


//ingreso de límite de facturas por teclado, y excepción que maneja el incorrecto tipo de dato ingresado
do{
try{
System.out.print("Ingrese el numero de Facturas a registrar: ");
noFacturas = scanner.nextInt();
validadorEntero=false;

if(noFacturas <= 0 ){
System.out.println("El nùmero no puede ser negativo! Intente nuevamente...\n");
validadorEntero=true;
}
}

catch (InputMismatchException eIME){


scanner.nextLine(); //descarta valor ingresado para que se ingrese nuevamente
System.out.println("ERROR! No se ingresò un nùmero entero, vuelva a intentarlo \n");
validadorEntero=true;
}
}
while (validadorEntero);

System.out.printf("Numero de facturas: %d \n\n",noFacturas);


//formato para cambiar el double a un decimal de 2 digitos
DecimalFormat df = new DecimalFormat("#.##");
/*asignaciòn de valores en los arreglos valores del 1 al 1000 o 2000, se ingresa if en cada arreglo
para que si son valores generados menores a 100, se ponga 0 como valor. Tambièn se ingresa excepciòn de tipo de dato incorrecto*/

double[] vivienda = new double[noFacturas];


double[] educacion = new double[noFacturas];
double[] salud = new double[noFacturas];
double[] alimentacion = new double[noFacturas];
double[] vestimenta = new double[noFacturas];
double[] varios = new double[noFacturas];
double[] totalFactura = new double[noFacturas];

do{
try{

for (int i=0; i<noFacturas;i++){

vivienda[i] = Math.random()*1000;
if(vivienda[i]<100)vivienda[i]=0;
educacion[i] = Math.random()*1000;
if(educacion[i]<100)educacion[i]=0;
salud[i] = Math.random()*2000;
if(salud[i]<200)salud[i]=0;
alimentacion[i] = Math.random()*1000;
if(alimentacion[i]<100)alimentacion[i]=0;
vestimenta[i] = Math.random()*1000;
if(vestimenta[i]<100)vestimenta[i]=0;
varios[i] = Math.random()*1000;
if(varios[i]<100)varios[i]=0;
totalFactura[i]=vivienda[i]+educacion[i]+salud[i]+alimentacion[i]+vestimenta[i]+varios[i];

//aquí se suman de una vez los valores por tipo de rubro y se almacena en las variables de totales
totalVivienda=totalVivienda+vivienda[i];
totalEducacion=totalEducacion+educacion[i];
totalSalud=totalSalud+salud[i];
totalAlimentacion=totalAlimentacion+alimentacion[i];
totalVestimenta=totalVestimenta+vestimenta[i];
totalVarios=totalVarios+varios[i];
granTotal=granTotal+totalFactura[i];
}
validadorDouble=false;
}
catch(InputMismatchException eIME){//catch que maneja el ingreso de tipo de dato incorrecto
scanner.nextLine();
System.out.println("ERROR! Revisar el còdigo ya que no se ha ingresado nùmeros de tipo Double");
validadorDouble=true;
}
} while (validadorDouble);

//se muestran los datos por pantalla


System.out.println("No. Factura\tVivienda\tEducacion\tSalud\t\tAlimentación\tVestimenta\tVarios\t\tTotal Factura");

for (int i=0; i<noFacturas;i++){


System.out.println("Factura "+(i+1)+"\t"+df.format(vivienda[i])+"\t\t"+df.format(educacion[i])+"\t\t"+df.format(salud[i])+
"\t\t"+df.format(alimentacion[i])+"\t\t"+df.format(vestimenta[i])+"\t\t"+df.format(varios[i])+"\t\t"+df.format(totalFactura[i]));
}

System.out.println("______________________________________________________________________________________________
_______________________________");

System.out.println("\nTotales Rubros"+"\t"+df.format(totalVivienda)+"\t\t"+df.format(totalEducacion)+"\t\t"+df.format(totalSalud)+

"\t\t"+df.format(totalAlimentacion)+"\t\t"+df.format(totalVestimenta)+"\t\t"+df.format(totalVarios)+"\t\t"+df.format(granTotal));

//bloques para calcular los màximos deducibles para cada tipo de rubro
if (totalVivienda>3510){
deducibleVivienda=3510;
} else {
deducibleVivienda=totalVivienda;
}

if (totalEducacion>3510){
deducibleEducacion=3510;
} else {
deducibleEducacion=totalEducacion;
}

if (totalSalud>14040){
deducibleSalud=14040;
} else {
deducibleSalud=totalSalud;
}

if (totalAlimentacion>3510){
deducibleAlimentacion=3510;
} else {
deducibleAlimentacion=totalAlimentacion;
}

if (totalVestimenta>3510){
deducibleVestimenta=3510;
} else {
deducibleVestimenta=totalVestimenta;
}

// se calcula el maximo de deducibles. De acuerdo al ejercicio planteado, no se toma en cuenta para este total el rubro VARIOS
deducibleTotal=deducibleVivienda + deducibleEducacion + deducibleSalud + deducibleAlimentacion + deducibleVestimenta;

System.out.println("\nDeducibles");

System.out.println("Máximos"+"\t\t"+df.format(deducibleVivienda)+"\t\t"+df.format(deducibleEducacion)+"\t\t"+df.format(deducible
Salud)+
"\t\t"+df.format(deducibleAlimentacion)+"\t\t"+df.format(deducibleVestimenta)+"\t\t\t\t"+df.format(deducibleTotal));

promedioSalud = totalSalud/noFacturas;

System.out.println("\nPromedio Salud\t\t\t\t\t"+df.format(promedioSalud));

if(deducibleTotal<10800){
System.out.println("\nEl empleado debe declarar impuestos?:\tNO");
} else{
System.out.println("\nEl empleado debe declarar impuestos?:\tSI");
}

System.out.println("\nMonto sobre el cual se debe declarar:\t"+df.format(deducibleTotal));


//bloque de if que calculan el impuesto en base a la tabla del SRI en base al maximo deducible
//se manejan ifs anidados por cada intervalo de valores
if(deducibleTotal>110190){
impuestoRenta = ((deducibleTotal-110190)*35/100)+21566;
}
else {
if(deducibleTotal>82660){
impuestoRenta = ((deducibleTotal-82660)*30/100)+13307;
}

else{
if(deducibleTotal>61980){
impuestoRenta = ((deducibleTotal-61980)*25/100)+8137;
}
else{
if(deducibleTotal>41330){
impuestoRenta= ((deducibleTotal-41330)*20/100)+4007;
}
else{
if(deducibleTotal>20670){
impuestoRenta = ((deducibleTotal-20670)*15/100)+908;
}
else{
if(deducibleTotal>17210){
impuestoRenta = ((deducibleTotal-17210)*12/100)+493;
}
else{
if(deducibleTotal>13770){
impuestoRenta = ((deducibleTotal-13770)*10/100)+149;
}
else{
if(deducibleTotal>10800){
impuestoRenta = ((deducibleTotal-10800)*5/100);
}
else{
impuestoRenta = 0;
}
}
}
}
}
}
}
}

System.out.println("\nEl valor a pagar por impuesto a la renta es:\t"+df.format(impuestoRenta));

facturaMenor = 2000;
posicionMenor = 0;
//for para calcular el valor menor en tipo de facturas de salud, se inicializa variable en 2000 que es el máximo
for (int i=0; i<noFacturas;i++){
if (salud[i]<facturaMenor&&salud[i]>0){
facturaMenor=salud[i];
posicionMenor=i;
}
}

System.out.println("\nLa factura con el menor valor de salud correponde a la factura "+(posicionMenor+1)+", por un valor
de:\t"+df.format(facturaMenor));

System.out.println("\nLas facturas que sobrepasan el promedio de salud ("+df.format(promedioSalud)+") son:");

for(int i=0; i<noFacturas;i++){


if(salud[i]>promedioSalud){
System.out.println("Factura "+(i+1)+" = "+df.format(salud[i]));
}
}

// calculo del promedio total anual


promedioAnual=(granTotal/noFacturas/6);

System.out.println("\nPromedio anual por factura: "+df.format(promedioAnual));

rubroMayor=null;
//bloques for para identificar cual es el valor mayor, y el tipo de rubro mayor, y la posición para obtener la factura
// al momento que se ejecuten todos los for, se obtendrán los valores mayores
for(int i=0;i<noFacturas;i++){
if (vivienda[i]>valorMayor){
valorMayor=vivienda[i];
rubroMayor="VIVIENDA";
posicionMayor=i;
}
}

for(int i=0;i<noFacturas;i++){
if (educacion[i]>valorMayor){
valorMayor=educacion[i];
rubroMayor="EDUCACION";
posicionMayor=i;
}
}

for(int i=0;i<noFacturas;i++){
if (salud[i]>valorMayor){
valorMayor=salud[i];
rubroMayor="SALUD";
posicionMayor=i;
}
}

for(int i=0;i<noFacturas;i++){
if (alimentacion[i]>valorMayor){
valorMayor=alimentacion[i];
rubroMayor="ALIMENTACION";
posicionMayor=i;
}
}

for(int i=0;i<noFacturas;i++){
if (vestimenta[i]>valorMayor){
valorMayor=vestimenta[i];
rubroMayor="VESTIMENTA";
posicionMayor=i;
}
}

for(int i=0;i<noFacturas;i++){
if (varios[i]>valorMayor){
valorMayor=varios[i];
rubroMayor="VARIOS";
posicionMayor=i;
}
}

//presentaciòn de datos en pantalla de acuerdo a si sobre pasa o no el promedio total. Se calcula con IF
if(valorMayor>promedioAnual){
System.out.println("\nLa factura con el mayor rubro es la Factura 00"+(posicionMayor+1)+" por el valor de
"+df.format(valorMayor)+
", correspondiente al rubro "+rubroMayor+";\ny esta SI supera el promedio de gastos anuales por facturas que es de
"+df.format(promedioAnual));
}
else{
System.out.println("\nLa factura con el mayor rubro es la Factura 00"+(posicionMayor+1)+" por el valor de "+df.format(valorMayor)+
", correspondiente al rubro "+rubroMayor+";ny esta NO supera el promedio de gastos anuales por facturas que es de
"+df.format(promedioAnual));
}

/*
*RUN

*/

Das könnte Ihnen auch gefallen