У меня есть этот кусок кода, который рассчитывает ежемесячный налог на заработную плату работника. Когда я запускаю его, все работает нормально до точки в условии if.Арифметика В C Не оценивать
Если я поставляю basicSalary как 50000 и все другие входные значения, как 0, то цифра monthlyTax приходит ноль, когда оно должно быть около 4000.
Может кто-нибудь объяснить мне, почему это происходит?
#include <stdio.h>
int main()
{
int basicSalary, allowances, transportAllowance, numberOfDependants, deduction;
float monthlyTax, income;
printf("Enter Basic Salary Amount: ");
scanf("%d", &basicSalary);
printf("\nEnter Allowances Amount: ");
scanf("%d", &allowances);
printf("\nEnter transportAllowance Amount: ");
scanf("%d", &transportAllowance);
printf("\nEnter Number Of Dependants: ");
scanf("%d", &numberOfDependants);
switch (numberOfDependants)
{
case 0:
deduction = 215000;
break;
case 1:
deduction = 325000;
break;
case 2:
deduction = 415000;
break;
case 3:
deduction = 475000;
break;
default:
printf("Number Of Dependants Can Only Be Between 0 - 3, Enter A Proper Value.");
return 1;
}
income = basicSalary * 13 + allowances + (transportAllowance - 6800) * 12 - deduction;
if (income < 500000)
{
monthlyTax = ((15/100) * (income/12));
}
else
{
monthlyTax = ((15/100) * (500000/12)) + ((30/100) * ((income-500000)/12));
}
monthlyTax = monthlyTax/12;
printf("\nMothly Tax Amount is %f", monthlyTax);
getch();
return 0;
}
Это за то, что фантазии и с помощью '15/100' вместо более "заземлены"' 0.15'; -) – dasblinkenlight
И в C это должно быть 'int main (void)' потому что '()' НЕ эквивалентно '(void)' в объявлении параметра. О, и, пожалуйста, прекратите распространять болезнь печати новых строк в начале строки; они принадлежат к концу напечатанной строки. – Jens
Благодарю вас обоих! :) @dasblinkenlight - yup, получилось слишком фантастично: P – Hirvesh