JustPaste.it
#include <stdio.h>



int main()
{
    
    int Annual_Deposit;
    float Annual_Return;
    float K_Management_Fee;
    float T_Management_Fee;
    int Time_Period;
    float Sum_Of_Deposit;  
    float Sum_of_Reinvest_Deposit;
    float Profit_Before_Tax;
    float Profit_After_Tax; 
    float K_Current = 0;
    float T6_Initial_Amount;
    float T6_Current_Before_Tax = 0;
    float T6_Current_After_Tax = 0;
    float T_Current_Before_Tax = 0;
    float T_Current_After_Tax = 0;
    float Reinvest_Tax_Benefit_BT = 0;
    float Reinvest_Tax_Benefit_AT = 0;
    float Marginal_Tax;
    int Monthly_Salary;
    int Employee_Or_Self;
    float Max_Tax_Benefit;
    float Personal_Tax_Benefit;
    float Total_Tax_Benefit;
    
    
        /* scan for all */
    
            printf("Annual Deposit? [₪] ");
            scanf("%d", &Annual_Deposit);
            
            printf("Annual Return? [%] ");
            scanf("%f", &Annual_Return);
            
            /* make Annual Return ---> % */
            Annual_Return = 1 + Annual_Return/100;
            
            printf("Keren Ishtalmut Management Fee? [%] ");
            scanf("%f/100", &K_Management_Fee);
            
            /* make Management Fee ---> % */
            K_Management_Fee = 1 - K_Management_Fee/100;
            
            printf("Tik Memuse Management Fee? [%] ");
            scanf("%f/100", &T_Management_Fee);
            
            /* make Management Fee ---> % */
            T_Management_Fee = 1 - T_Management_Fee/100;
            
            printf("Time Period? [Year] ");
            scanf("%d", &Time_Period);
            
            printf("Monthly Salary? [₪] ");
            scanf("%d", &Monthly_Salary);
            
        /* determine marginal tax */
            
            if((Monthly_Salary>=0) && (Monthly_Salary<=6450)){
                Marginal_Tax=0.10;    
            }
            else if((Monthly_Salary>6450) && (Monthly_Salary<=9240)){
                Marginal_Tax=0.14;
            }
            else if((Monthly_Salary>9240) && (Monthly_Salary<=14840)){
                Marginal_Tax=0.20;
            }
            else if((Monthly_Salary>14840) && (Monthly_Salary<=20620)){
                Marginal_Tax=0.31;
            }
            else if((Monthly_Salary>20620) && (Monthly_Salary<=42910)){
                Marginal_Tax=0.35;
            }
            else if((Monthly_Salary>42910) && (Monthly_Salary<=55270)){
                Marginal_Tax=0.47;
            }
            else if(Monthly_Salary>55270){
                Marginal_Tax=0.50;
            }
            
            printf("Employee or Self-employee? (0 for Employee, 1 for self) ");
            scanf("%d", &Employee_Or_Self);

        /* calc max and personal tax benefit - employee or self */

            /* employee */
            if(Employee_Or_Self == 0){
                
                Max_Tax_Benefit = 0.075*12*Monthly_Salary;
                
                /* over the max */
                if(Max_Tax_Benefit>14140){
                    Max_Tax_Benefit = 14140;
                }
            }

                
            /* self employee */
            if(Employee_Or_Self == 1){
                
                Max_Tax_Benefit = 0.045*12*Monthly_Salary;
                
                /* over the max */
                if(Max_Tax_Benefit > 12150){
                    Max_Tax_Benefit = 12150;
                }
            }


        /* calc personal tax benefit */
            if(Annual_Deposit > Max_Tax_Benefit){
                    Personal_Tax_Benefit = Max_Tax_Benefit*Marginal_Tax;
            }
            else{
                    Personal_Tax_Benefit = Annual_Deposit*Marginal_Tax;
            }
        
        /* calc total tax benefit */
        Total_Tax_Benefit = Personal_Tax_Benefit*Time_Period;
        
    
        /* calculation start */
    
            /* Keren ishtalmut */
            printf("---------------------\n");
            printf("Keren ishtalmut:\n\n");

            for (int i = 0; i < Time_Period; ++i)
              {
                
                K_Current += Annual_Deposit;
                K_Current *= Annual_Return;
                K_Current *= K_Management_Fee;
                
                printf("%d: %.0f\n", i+1,K_Current);
                
                    /* initial amount of tik memuse 6+ */
                    if(i==5){
                        T6_Initial_Amount = K_Current;
                        T6_Current_Before_Tax = T6_Initial_Amount;
                    }
                    
              }
             
             
            /* Tik memuse */


            /* start after 6+ years */
            
            if(Time_Period>6){
            
                printf("---------------------\n");
                printf("Tik memuse - start after 6 years (after tax):\n\n");
                
                for (int k = 0; k < Time_Period-6; ++k)
                  {
                    
                    T6_Current_Before_Tax += Annual_Deposit;
                    T6_Current_Before_Tax *= Annual_Return;
                    T6_Current_Before_Tax *= T_Management_Fee;
                    Sum_Of_Deposit = T6_Initial_Amount + Annual_Deposit*(k+1);
                    Profit_Before_Tax = T6_Current_Before_Tax - Sum_Of_Deposit;
                    Profit_After_Tax = Profit_Before_Tax*0.75;
                    T6_Current_After_Tax = Sum_Of_Deposit + Profit_After_Tax; 
                    
                    printf("%d (%d): %.0f\n", k+1+6,k+1,T6_Current_After_Tax);
                    
                  }
            }
             
             
            /* start from the beginning */
            
            printf("---------------------\n");
            printf("Tik memuse - start from the beginning (after tax):\n\n");
            
            for (int j = 0; j < Time_Period; ++j)
              {
                  
                T_Current_Before_Tax += Annual_Deposit;
                T_Current_Before_Tax *= Annual_Return;
                Sum_Of_Deposit = Annual_Deposit*(j+1);
                Profit_Before_Tax = T_Current_Before_Tax - Sum_Of_Deposit;
                Profit_After_Tax = Profit_Before_Tax*0.75;
                T_Current_After_Tax = Sum_Of_Deposit + Profit_After_Tax; 
                
                printf("%d: %.0f\n", j+1,T_Current_After_Tax);
                
              }
              
              
            /* Reinvest_Tax_Benefit */
            
            printf("---------------------\n");
            printf("Reinvest the tax benefit on tik memuse:\n\n");
            
            for (int r = 0; r < Time_Period; ++r)
              {
                  
                Reinvest_Tax_Benefit_BT += Personal_Tax_Benefit;
                Reinvest_Tax_Benefit_BT *= Annual_Return;
                Sum_of_Reinvest_Deposit = Personal_Tax_Benefit*(r+1);
                Profit_Before_Tax = Reinvest_Tax_Benefit_BT - Sum_of_Reinvest_Deposit;
                Profit_After_Tax = Profit_Before_Tax*0.75;
                Reinvest_Tax_Benefit_AT = Sum_of_Reinvest_Deposit + Profit_After_Tax; 
                
                printf("%d: %.0f\n", r+1,Reinvest_Tax_Benefit_AT);
                
              }
              
            
            /* result */
            
                printf("---------------------\n");
                printf("The results after %d years are (after tax):\n\n", Time_Period);
                printf("Keren ishtalmut: %.0f\n", K_Current);
            if(Time_Period>6){
                printf("Keren (6 years) then Tik: %.0f\n", T6_Current_After_Tax);
            }
                printf("Tik memuse: %.0f\n", T_Current_After_Tax);
                printf("Tax benefit reinvestment: %.0f\n", Reinvest_Tax_Benefit_AT);
                printf("Total tax saved: %.0f\n", Total_Tax_Benefit);
                
                printf("\n-------- conclusion --------\n\n");

                printf("Total - keren (%d) + reinvestment (%d): %.0f\n", Time_Period,Time_Period,K_Current+Reinvest_Tax_Benefit_AT);      
                printf("Total - keren (6) + tik memuse (%d) + reinvestment (%d): %.0f\n", Time_Period-6,Time_Period,T6_Current_After_Tax+Reinvest_Tax_Benefit_AT);
                printf("Total - tik memuse (%d) + reinvestment (%d): %.0f\n", Time_Period,Time_Period,T_Current_After_Tax+Reinvest_Tax_Benefit_AT);


    



    return 0;
}