6. Условни оператори II
Ако облагаемата сума е над | но не повече от | данъкът е | върху сумата над |
0 | 21400 | 15% | 0 |
21450 | 51900 | 3217.50 + 28% | 21450 |
51900 | - | 11743.50 + 31% | 51900 |
Ако облагаемата сума е над | но не повече от | данъкът е | върху сумата над |
0 | 35800 | 15% | 0 |
35800 | 51900 | 5370.00 + 28% | 35800 |
86500 | - | 19566.00 + 31% | 86500 |
// tax.cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{ double income;
double tax;
cout << "Please enter
your income: ";
cin >> income;
cout << "Please enter
s for single, m for married: ";
string marital_status;
cin >> marital_status;
if (marital_status == "s")
{ if (income <=
21450)
tax = 0.15 * income;
else if
(income <= 51900)
tax = 3217.5 + 0.28 * (income - 21450);
else
tax = 11743.5 + 0.31 * (income - 51900);
}
else
{ if (income <=
35800)
tax = 0.15 * income;
else if
(income <= 86500)
tax = 5370 + 0.28 * (income - 35800);
else
tax = 19566 + 0.31 * (income - 86500);
}
cout << "The tax is
$" << tax << "\n";
return 0;
}
Please enter your income: 30000
Please enter s for single, m for married: m The tax is $4500 |
Операторът if (income <= 21450)
е вложен в оператора
if (marital_status == "s").
** Програма за пресмятане на годишен данък общ доход у нас.
Таблица за годишно облагане на доходите по чл.35 от Закона за облагане доходите на физическите лица за 2002 г.
Ако облагаемата сума е над | но не повече от | данъкът е | върху сумата над |
0 | 1320 | 0 | - |
1320 | 1680 | 18% | 1320 |
1680 | 4800 | 64.80 + 24% | 1680 |
4800 | 12000 | 813.60 + 28% | 4800 |
12000 | - | 2829.60 + 29% | 12000 |
int main()
{ double income;
double tax;
cout << "Please enter
your income: ";
cin >> income;
do
{
if (income <= 1320)
tax = 0;
else if (income <=
1680)
tax = 0.18*(income-
1320);
else if (income <=
4800)
tax = 64.80 + 0.24*(income- 1680);
else if (income <=12000)
tax = 813.60 + 0.28*(income- 4800);
else
tax =2829.60 + 0.29*(income-12000);
cout << "The
tax is " << tax << "\n";
cout << "Please
enter your income: ";
cin >> income;
}
while (income > 0);
return 0;
}
Please enter your income: 10000
The tax is 2269.6 Please enter your income: 3652.50 The tax is 538.2 Please enter your income: 0 |
В тази програма е използван оператор за цикъл do/while
(който ще се изучава по-нататък), за да може с едно пускане на програмата
да се пресмята данъка многократно, за различни доходи. Програмата прекратява
работата си, когато въведем доход 0.
истина | да | true | 1 | изпълнено | вярно | удовлетворено |
лъжа | не | false | 0 | нарушено | невярно | неудовлетворено |
** Основни логически операции:
и | конюнкция | and | && | бинарна операция |
или | дизюнкция | or | || | бинарна операция |
не | отрицание | not | ! | унарна операция |
** Таблици за стойността на логическите операции:
|
|
|
int main()
{ cout << "Enter the time
that the homework is due";
cout << " (hours minutes):
";
int hours;
int minutes;
cin >> hours >> minutes;
Time homework_due(hours,
minutes, 0);
Time now;
if (now.get_hours() <
homework_due.get_hours() or
(now.get_hours()
== homework_due.get_hours()
and now.get_minutes() <=
homework_due.get_minutes()))
cout <<
"Still time to finish the homework.\n";
else
cout <<
"The homework is already past due.\n";
return 0;
}
Enter the time that the homework is due
(hours minutes): 10 20
Still time to finish the homework. |
** Отложени пресмятания
- За логическата операция and: ако първият аргумент
е false
и стойността на операцията е false,
независимо от стойността на втория аргумент.
- За логическата операция or: ако първият
аргумент е true и стойността на операцията е true,
независимо от стойността на втория аргумент.
Пример.
double area;
cin >> area;
if (cin.fail() or area < 0) cout <<
"Input error";
При проверката на въведено число и грешка във входния
поток не се проверява условието area < 0.