Calcular+impuestos+a+pagar

=__**Cálculo de los impuestos a pagar, teniendo en cuenta las desgravaciones**__= >

Programa que calcula los impuestos a pagar por una persona. >>	Los impuestos son el 15 % de los ingresos >>	Las desgravaciones son: >>>		2000 Euros en cada declaración >>>		2500 Euros si el declarante es mayor de 50 años >>		3500 Euros si el declarante es padre de familia numerosa ( 3 hijos o más ) >> Caso en que las desgravaciones NO SEAN ACUMULABLES

>> NOTA:si las desgravaciones fueran acumulables bastaría con utilizar una sentencia IF THEN para cada concepto que desgrave.

**Si las desgravaciones son acumulables: Sentencias IF** code format="pascal" PROGRAM Impues_1 ; CONST rPORCENTAJE               = 0.15 ; iDESGRAVACION_INDIVIDUAL  = 2000 ; iFAMILIA_NUMEROSA         = 3 ; iDESGRAVACION_FAM_NUMEROSA = 2500 ; iLIMITE_EDAD              = 50 ; iDESGRAVACION_EDAD        = 3500 ; VAR iHijos, iEdad        : Integer ; rIngresos, rImpuestos : Real ; BEGIN WriteLn ('Programa que calcula los impuestos a pagar') ; WriteLn ;

Write ('Ingresos totales: ') ; ReadLn (rIngresos) ; Write (' Número de hijos: ') ; ReadLn (iHijos) ; Write ('            Edad: '); ReadLn (iEdad) ;

rImpuestos := rIngresos * rPORCENTAJE ;

{ alternativas múltiples, con diferente condición de selección } IF iHijos >= iFAMILIA_NUMEROSA THEN rImpuestos := rImpuestos - iDESGRAVACION_FAM_NUMEROSA ;

IF iEdad >= iLIMITE_EDAD THEN rImpuestos := rImpuestos - iDESGRAVACION_EDAD ; rImpuestos := rImpuestos - iDESGRAVACION_INDIVIDUAL ;

IF rImpuestos > 0 THEN BEGIN WriteLn ('Declaración positiva') ; WriteLn ('A pagar: ', rImpuestos:0:2, ' Euros') ; END ELSE BEGIN WriteLn ('Declaración negativa') ; WriteLn ('A devolver: ', Abs(rImpuestos):0:2, ' Euros') ; END ;

END. { IMPUES_2.PAS } code **Si las desgravaciones NO son ACUMULABLES: Sentencias IF ELSE IF ** **Se debe tener cuidado con el orden de las condiciones en las sentencias IF ELSE IF ** code format="pascal" PROGRAM Impues_2 ; CONST rPORCENTAJE               = 0.15 ; iDESGRAVACION_INDIVIDUAL  = 2000 ; iFAMILIA_NUMEROSA         = 3 ; iDESGRAVACION_FAM_NUMEROSA = 2500 ; iLIMITE_EDAD              = 50 ; iDESGRAVACION_EDAD        = 3500 ; VAR iHijos, iEdad        : Integer ; rIngresos, rImpuestos : Real ; BEGIN WriteLn ('Programa que calcula los impuestos a pagar') ; WriteLn ;

Write ('Ingresos totales: ') ; ReadLn (rIngresos) ; Write (' Número de hijos: ') ; ReadLn (iHijos) ; Write ('            Edad: '); ReadLn (iEdad) ;

rImpuestos := rIngresos * rPORCENTAJE ;

{ alternativas múltiples, con diferente condición de selección } IF iHijos >= iFAMILIA_NUMEROSA THEN rImpuestos := rImpuestos - iDESGRAVACION_FAM_NUMEROSA ELSE IF iEdad >= iLIMITE_EDAD THEN rImpuestos := rImpuestos - iDESGRAVACION_EDAD ELSE rImpuestos := rImpuestos - iDESGRAVACION_INDIVIDUAL ;

IF rImpuestos > 0 THEN BEGIN WriteLn ('Declaración positiva') ; WriteLn ('A pagar: ', rImpuestos:0:2, ' Euros') ; END ELSE BEGIN WriteLn ('Declaración negativa') ; WriteLn ('A devolver: ', Abs(rImpuestos):0:2, ' Euros') ; END ; END. { IMPUES_2.PAS } code **Supongamos que las desgravaciones dependen únicamente de la edad: Sentencia CASE** Programa que calcula los impuestos a pagar por una persona. >>     Los impuestos son el 15 % de los ingresos >>     Las desgravaciones son en función de la edad: >>>    Edad   < 30	2000 Euros. en cada declaración

>>>   30  <= 	Edad  < 50	2500 Euros +  100 * Año que sobrepase los 30

>>>     50  <= 	Edad		5000 Euros +  120 * Año que sobrepase los 50 code format="pascal" PROGRAM Impues_3 ; CONST rPORCENTAJE               = 0.15 ; VAR iEdad                          : Integer ; rIngresos, rImpuestos : Real ; BEGIN WriteLn ('Programa que calcula los impuestos a pagar') ; WriteLn ;

Write ('Ingresos totales: ') ; ReadLn (rIngresos) ; Write ('            Edad: '); ReadLn (iEdad) ;

rImpuestos := rIngresos * rPORCENTAJE ;

IF iEdad > 0 THEN BEGIN rImpuestos := rIngresos * rPORCENTAJE ;

CASE iEdad OF         0  .. 29 :                       rImpuestos := rImpuestos - 2000 ; 30 .. 49 :                      BEGIN rImpuestos := rImpuestos - 2500 ; rImpuestos := rImpuestos - 100 * (iEdad - 30) ; END ; ELSE rImpuestos := rImpuestos - 5000 ; rImpuestos := rImpuestos - 120 * (iEdad - 50) ; END ; IF rImpuestos > 0 THEN BEGIN WriteLn ('Declaración positiva') ; WriteLn ('A pagar: ', rImpuestos:0:2, ' Euros') ; END ELSE BEGIN WriteLn ('Declaración negativa') ; WriteLn ('A devolver: ', Abs(rImpuestos):0:2, ' Euros') ; END ; END ELSE Writeln ('ERROR: No se puede tener una edad negativa'); END. { IMPUES_3.PAS } code