Составить программу, которая по введенной месячной зарплате, вычисляет подоходный налог.
В разных государствах подоходный налог может считаться по разному, поэтому программы могут отличаться. Например, данная задача была рассмотрена в рамках государства Украина, программа считает подоходный налог согласно налоговому кодексу Украины. Для решение этой задачи мне понадобился оператор множественного выбора 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
Комментарии
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; }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; }