Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практическая работа №2.docx
Скачиваний:
1
Добавлен:
27.01.2025
Размер:
512.42 Кб
Скачать

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)