Составить программу с использованием условного оператора if/else.
Ввести с клавиатуры число х. Вывести в порядке возрастания числа: sin x, cos x, ln x. Если при каком-либо х некоторые из выражений не имеют смысла, вывести сообщение об этом и сравнивать значения только тех, которые имеют смысл.
C/C++
УМОЛЯЮ!!!!! Помогите решить задачу на C++
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
double a[3], x;
cout << "x: ";
cin >> x;
a[0] = sin(x);
cout << "sin(x) = " << a[0] << endl;
a[1] = cos(x);
cout << "cos(x) = " << a[1] << endl;
if (x <= 0)
{
cout <<
"logarithm of a non-positive number"
<< endl;
sort(a, a + 2);
cout << a[0] << ' ' << a[1] << endl;
}
else
{
a[2] = log(x);
cout << " ln(x) = " << a[2] << endl;
sort(a, a + 3);
cout << a[0] << ' ' << a[1] << ' ' << a[2] << endl;
}
}
Если
cout << "sin(x) = " << a[0] << endl;
cout << "cos(x) = " << a[1] << endl;
и
cout << " ln(x) = " << a[2] << endl;
не нужны, то их можно убрать, но с ними всё понятнее. Функция sort из стандартной библиотеки нужна для того, чтобы оператор if else был единственным. Если этой функцией не пользоваться, то таких операторов будет потребуется несколько.
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
double a[3], x;
cout << "x: ";
cin >> x;
a[0] = sin(x);
cout << "sin(x) = " << a[0] << endl;
a[1] = cos(x);
cout << "cos(x) = " << a[1] << endl;
if (x <= 0)
{
cout <<
"logarithm of a non-positive number"
<< endl;
sort(a, a + 2);
cout << a[0] << ' ' << a[1] << endl;
}
else
{
a[2] = log(x);
cout << " ln(x) = " << a[2] << endl;
sort(a, a + 3);
cout << a[0] << ' ' << a[1] << ' ' << a[2] << endl;
}
}
Если
cout << "sin(x) = " << a[0] << endl;
cout << "cos(x) = " << a[1] << endl;
и
cout << " ln(x) = " << a[2] << endl;
не нужны, то их можно убрать, но с ними всё понятнее. Функция sort из стандартной библиотеки нужна для того, чтобы оператор if else был единственным. Если этой функцией не пользоваться, то таких операторов будет потребуется несколько.
#include <iostream>
#include <string>
#include <iomanip>
#include <string>
using namespace std;
struct Data {
double value;
string message;
Data() : value(0) {}
Data(const double val, const string& msg) : value(val), message(msg) {}
private:
friend bool operator<(const Data& a, const Data& b) {
if ("inf"s == to_string(fabs(b.value))) return false;
if ("inf"s == to_string(fabs(a.value))) return true;
if ("nan"s == to_string(fabs(b.value))) return false;
if ("nan"s == to_string(fabs(a.value))) return true;
return a.value < b.value;
}
friend ostream& operator<<(ostream& out, const Data& d) {
out << d.message;
auto tmp = fabs(d.value);
if ("nan"s == to_string(tmp)) puts("not a number");
else if ("inf"s == to_string(tmp)) puts("infinity");
else out << d.value;
return out;
}
};
int main() {
cout << "x: ";
double x;
cin >> x;
Data a{ sin(x), "sin(x) = " };
Data b{ cos(x), "cos(x) = " };
Data c{ log(x), "log(x) = " };
if (b < a) swap(a, b);
if (c < a) swap(a, c);
if (c < b) swap(b, c);
cout.setf(ios::fixed);
cout.precision(15);
cout << a << '\n' << b << '\n' << c << '\n';
system("pause > nul");
}
#include <string>
#include <iomanip>
#include <string>
using namespace std;
struct Data {
double value;
string message;
Data() : value(0) {}
Data(const double val, const string& msg) : value(val), message(msg) {}
private:
friend bool operator<(const Data& a, const Data& b) {
if ("inf"s == to_string(fabs(b.value))) return false;
if ("inf"s == to_string(fabs(a.value))) return true;
if ("nan"s == to_string(fabs(b.value))) return false;
if ("nan"s == to_string(fabs(a.value))) return true;
return a.value < b.value;
}
friend ostream& operator<<(ostream& out, const Data& d) {
out << d.message;
auto tmp = fabs(d.value);
if ("nan"s == to_string(tmp)) puts("not a number");
else if ("inf"s == to_string(tmp)) puts("infinity");
else out << d.value;
return out;
}
};
int main() {
cout << "x: ";
double x;
cin >> x;
Data a{ sin(x), "sin(x) = " };
Data b{ cos(x), "cos(x) = " };
Data c{ log(x), "log(x) = " };
if (b < a) swap(a, b);
if (c < a) swap(a, c);
if (c < b) swap(b, c);
cout.setf(ios::fixed);
cout.precision(15);
cout << a << '\n' << b << '\n' << c << '\n';
system("pause > nul");
}
Похожие вопросы
- Помогите решить задачу по C++!
- Помогите решить задачу на C++
- Помогите решить задачу на C++.
- Помогите решить задачу на c++
- Помогите решить задачу на C++
- Помогите решить задачу на C++
- Помогите решить задачу на C++
- Помогите решить задачу на C++
- Помогите решить задачу в C++
- Помогите решить задачу по программированию на C++