4 Текст программы
#include <iostream>
#include <cmath>
using namespace std;
double numb(double&nu)
{
while (true)
{
if (cin.fail())
{
cin.clear();
cin.ignore(1000, '\n');
cout << "Ошибка! Введенные данные не являются числом\n";
cout << "Повторите ввод: ";
cin >> nu;
}
else
{
return nu;
}
}
}
double zero(double&z)
{
while (true)
{
if ((z == 0))
{
cout << "Ошибка! При данном значении знаменатель обращается в ноль\n";
cout << "Повторите ввод: ";
cin >> z;
numb(z);
}
else
{
return z;
}
}
}
int main()
{
setlocale(LC_ALL, "rus");
double x, y, d;
int k, l, m, n;
cout << "Введите х = ";
cin >> x;
numb(x);//проверка является ли введенный х числом
zero(x);//проверка на обращение знаменателя в ноль
cout << "Введите y = ";
cin >> y;
numb(y);//проверка является ли введенный у числом
zero(y);//проверка на обращение знаменателя в ноль
d = (x * y * y - sqrt(abs(x * x - 2.5 * pow(10, -3) * y))) / (2 * sin(x * y)) + 0.5;
k = d;
l = int(d);
m = ceil(d);
n = floor(d);
cout << endl << "Вещественное d = " << d << endl;
cout << endl << "Целая часть результата (неявно) k = " << k;
cout << endl << "Целая часть результата (явное преобразование) l = " << l;
cout << endl << "Округленное в большую сторону m = " << m;
cout << endl << "Округленное в меньшую сторону n = " << n << endl;
cout << endl << "Значение префиксного инкремента ++k= " << ++k;
cout << endl << "Значение постфиксного инкремента l++= " << l++;
cout << endl << "Значение k после приращения = " << k;
cout << endl << "Значение l после приращения = " << l << endl;
system("PAUSE");
return 0;
}
Текст программы проекта:
n
= floor(d); cout
<<
endl <<
"Вещественное
d = "
<<
d <<
endl;
cout
<<
endl <<
"Целая
часть результата (неявно) k = "
<<
k; cout
<<
endl <<
"Целая
часть результата (явное преобразование)
l = "
<<
l; cout
<<
endl <<
"Округленное
в большую сторону m = "
<<
m; cout
<<
endl <<
"Округленное
в меньшую сторону n = "
<<
n <<
endl;
cout
<<
endl <<
"Значение
префиксного инкремента ++k= "
<<
++k; cout
<<
endl <<
"Значение
постфиксного инкремента l++= "
<<
l++; cout
<<
endl <<
"Значение
k после приращения = "
<<
k; cout
<<
endl <<
"Значение
l после приращения = "
<<
l <<
endl;
system("PAUSE"); return
0; }
5 Результаты тестирования программы
Результаты тестирования представлены в таблице 1, а типы возникающих ошибок в таблице 2.
Таблица 1 – Результаты тестирования
№ |
x |
y |
d |
k |
l |
m |
n |
++k |
l++ |
k |
l |
Ошибки |
1 |
1.3802 |
-1.9 |
-3.1282 |
-3 |
-3 |
-3 |
-4 |
-2 |
-3 |
-2 |
-2 |
Нет (рис.4) |
2 |
-7.5 |
3 |
-76.474 |
-76 |
-76 |
-76 |
-77 |
-75 |
-76 |
-75 |
-75 |
Нет (рис.5) |
3 |
9 |
0 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
1 (рис.6) |
4 |
0 |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
1 (рис.7) |
5 |
2 |
a |
- |
- |
- |
- |
- |
- |
- |
- |
- |
2 (рис.8) |
6 |
! |
- |
- |
- |
- |
- |
- |
- |
- |
- |
- |
2 (рис.9) |
Таблица 2 – Типы ошибок
Код ошибки |
Описание ошибки |
1 |
Деление на ноль |
2 |
Неверный ввод данных |
Результаты тестирования представлены на рисунках 4-9:
Рисунок 4 – Работа программы без ошибок
Рисунок 5 – Работа программы без ошибок
Рисунок 6 – Знаменатель обращается в ноль. (Ошибка 1)
Рисунок 7 – Знаменатель обращается в ноль (Ошибка 1)
Рисунок 8 – Неверный ввод данных (Ошибка 2)
Рисунок 9 – Неверный ввод данных (Ошибка 2)
