#include
#include
#include
#include
#include
using namespace std;
main ()
{
float x,z;
cout<<("vvedite chislo x :");
cin>>x;
z= () ? (log(pow(x,2))/(1+pow(log(x),2))+x/(log(x)-1)): throw domain_error("error!");
cout<
C/C++
Помогите с задачей в C++ пожалуйста. Какое условие правильно написать в Z чтобы выводилось сообщение "error!" ?
У вас слишком радужные представления об исключительных ситуациях! Одной ошибкой дело не обойдётся...
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
#include <cstdlib>
using namespace std;
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int main() {
while (true) {
cout << "Input X: ";
string line;
cin >> line;
double x;
try {
x = stod(line);
} catch (invalid_argument& e) {
cerr << "Exception: " << e.what() << '\n';
continue;
} catch (out_of_range& e) {
cerr << "Exception: " << e.what() << '\n';
continue;
} catch (...) {
cerr << "Exception: unknown exception on data entry\n";
continue;
}
try {
if (x < 0) throw invalid_argument("logarithm argument is less than zero");
if (x == 0) throw invalid_argument("logarithm argument is zero");
auto lx = log(x);
auto arg = lx - 1;
if (arg == 0) throw invalid_argument("division by zero attempt");
auto z = log(pow(x, 2)) / (1 + pow(lx, 2)) + x / arg;
if (isinf(z)) throw out_of_range("the value is infinite");
cout << "z = " << fixed << setprecision(15) << z << '\n';
break;
} catch (invalid_argument& e) {
cerr << "Exception: " << e.what() << '\n';
} catch (out_of_range& e) {
cerr << "Exception: " << e.what() << '\n';
} catch (...) {
cerr << "Exception: unknown calculation exception\n";
}
}
system("pause");
}
Любое из перечисленных ниже значений X вызовет исключение:
-1
0
2.718281828459045
1e308
9e1024
OxFF
#include <iostream>
#include <string>
#include <iomanip>
#include <cmath>
#include <cstdlib>
using namespace std;
double real(const char* msg) {
cout << msg;
double value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int main() {
while (true) {
cout << "Input X: ";
string line;
cin >> line;
double x;
try {
x = stod(line);
} catch (invalid_argument& e) {
cerr << "Exception: " << e.what() << '\n';
continue;
} catch (out_of_range& e) {
cerr << "Exception: " << e.what() << '\n';
continue;
} catch (...) {
cerr << "Exception: unknown exception on data entry\n";
continue;
}
try {
if (x < 0) throw invalid_argument("logarithm argument is less than zero");
if (x == 0) throw invalid_argument("logarithm argument is zero");
auto lx = log(x);
auto arg = lx - 1;
if (arg == 0) throw invalid_argument("division by zero attempt");
auto z = log(pow(x, 2)) / (1 + pow(lx, 2)) + x / arg;
if (isinf(z)) throw out_of_range("the value is infinite");
cout << "z = " << fixed << setprecision(15) << z << '\n';
break;
} catch (invalid_argument& e) {
cerr << "Exception: " << e.what() << '\n';
} catch (out_of_range& e) {
cerr << "Exception: " << e.what() << '\n';
} catch (...) {
cerr << "Exception: unknown calculation exception\n";
}
}
system("pause");
}
Любое из перечисленных ниже значений X вызовет исключение:
-1
0
2.718281828459045
1e308
9e1024
OxFF
false
Олег Колганов
он тогда всегда error выбивает
Похожие вопросы
- Задача по c++ на векторы. Часть программы написана. Нужны правки.
- ПОМОГИТЕ С ЗАДАЧЕЙ НА C++
- Помогите решить задачу по C++!
- Помогите решить задачу на C++.
- Помогите с задачей по C++
- Помогите решить задачу на C++
- Помогите решить задачу на c++
- Помогите решить задачу на C++
- Помогите с задачей по C++
- Помогите решить задачу на C++