Программа для расчета подоходного налога

Уровень сложности:

Составить программу, которая по введенной месячной зарплате, вычисляет подоходный налог.

В разных государствах подоходный налог может считаться по разному, поэтому программы могут отличаться. Например, данная задача была рассмотрена  в рамках государства Украина, программа считает подоходный налог согласно налоговому кодексу Украины. Для решение этой задачи мне понадобился оператор множественного выбора switch и несколько функций, для которых были созданы прототипы. Результат работы программы показан ниже:

// income_tax.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
using namespace std;
int counter_limit (const double &, const double &); // прототип функции для подсчёта необлагаемых минимумов
double tax(const double &, const double &, const int, const double); // прототип функции для начисления подоходного налога
int main(int argc, char* argv[])
{
	cout << "Enter the monthly salary: "; // введите размер месячной заработной платы
	double month_salary; // месечная заработная плата
	cin >> month_salary;
    const char val[] = "UAH"; // тип валюты
	const double exemption_limit = 940; // необлагаемый минимум 
    double income_tax; // подоходный налог
	switch (counter_limit (month_salary, exemption_limit)) // расчёт подоходного налога, в зависимости от количества необлагаемых минимумов
	{
		case 0  : {income_tax = 0; break;}                                              // в случае если НДФЛ <= одного необлагаемого минимума
		case 1  : {income_tax = (month_salary - exemption_limit) * 10.0 / 100; break; } // в случае если НДФЛ > одного необлагаемого минимума и меньше либо равно 5 необлагаемых минимумов
		case 2  : {income_tax = tax(month_salary, exemption_limit, 5, 15); break;}      // в случае если НДФЛ > 5 необлагаемых минимумов и меньше либо равно 10 необлагаемым минимумам
		case 3  : {income_tax = tax(month_salary, exemption_limit, 10, 20); break;}     // в случае если НДФЛ > 10 необлагаемых минимумов и меньше либо равно 60 необлагаемым минимумам
		case 4  : {income_tax = tax(month_salary, exemption_limit, 60, 30); break;}		// в случае если НДФЛ > 60 необлагаемых минимумов и меньше либо равно 100 необлагаемым минимумам
		case 5  : {income_tax = tax(month_salary, exemption_limit, 100, 40); break;}    // в случае если НДФЛ > 100 необлагаемых минимумов
		default : {income_tax = 0; cout << "Incorrect entry" << endl;} // в случае ввода отрицательного числа
	}
	cout << "income tax = " << income_tax << " " << val << endl; // вывод подоходного налога
	system("pause");
	return 0;
}
int counter_limit (const double &month_salary,   // месячная зарплата
	               const double &exemption_limit // необлагаемый минимум
	              )                              // функция для подсчёта необлагаемых минимумов
{
	return (month_salary <=      exemption_limit) && (month_salary >= 0)                     ? 0 : // функция вернёт нуль
		   (month_salary >       exemption_limit) && (month_salary <= 5 * exemption_limit)   ? 1 : // функция вернёт 1
		   (month_salary > 5   * exemption_limit) && (month_salary <= 10 * exemption_limit)  ? 2 : // функция вернёт 2
		   (month_salary > 10  * exemption_limit) && (month_salary <= 60 * exemption_limit)  ? 3 : // функция вернёт 3
		   (month_salary > 60  * exemption_limit) && (month_salary <= 100 * exemption_limit) ? 4 : // функция вернёт 4
		   (month_salary > 100 * exemption_limit) ? 5 : -1; // если условие истинно, то функция вернёт 5, иначе -1
}       
double tax(const double &month_salary,    // месячная зарплата
	       const double &exemption_limit, // не облагаемый минимум
		   const int number_bids,         // минимальное количество не облагаемых минимумов
		   const double percentage        // процент начисления подоходного налога  
		  )                               // функция для начисления подоходного налога
{
	return ( ((exemption_limit * number_bids) * 10.0 / 100) + (month_salary - (exemption_limit * number_bids)) * percentage / 100.0); // формула для расчёта подоходного налога
}


Результат:

CppStudio.com

Enter the monthly salary: 3000
income tax = 206 UAH

Следующие статьи помогут вам в решении данной задачи:
Автор: admin
Дата: 12.09.2012
Поделиться:

Комментарии

  1. Anufree

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    	setlocale(LC_ALL, "Russian");
    	
    	double arr[2] = { 0.0 };
    
    	cout << "Введите оклад: "; cin >> arr[0];
    	cout << "Введите ставку налога: "; cin >> arr[1];
    	cout << "Сумма на руки: " << (arr[0] * arr[1]) / 100 << endl;
    	cout << "Сумма налога: " << (arr[0] - (arr[0] * arr[1]) / 100) << endl;
    
    	system("pause");
    
    	return 0;
    }
  2. odto11

    odto11

    #include <iostream>
    using namespace std;
    
    double nalogru(double dRU);
    double nalogua(double dUA);
    
    int main()
    {      
        int iCount;
        double dZpru, dZpua;
    
        cout << "Выберите страну\n1. РФ\n2. Украина\n";
        cout << "Ваш выбор: ";
        cin >> iCount;
    
        switch(iCount)
        {  
            case 1: 
            {  
                cout << "Введите вашу зарплату: ";
                cin >> dZpru;
                cout << "Подаходный налог в РФ составит: " << nalogru(dZpru) << " RUB" << endl; 
                break;
            }  
    
            case 2: 
            {       
                cout << "Введите вашу зарплату ";
                cin >> dZpua;
                cout << "Подаходный налок в Украине составит: " << nalogua(dZpua) << " UAH " << endl;
                break;
            }  
            default: cout << "\nНеобходимо выбрать страну!!!" << endl;
        }  
           
        return 0; 
    }
    
    double nalogru(double dRU)
    {
        double x; 
        x = dRU * 0.13;
        return x; 
    }
    
    double nalogua(double dUA)
    {
        double x; 
        x = dUA * 0.15;
        return x; 
    }

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.