Алгоритмы разветвляющей структуры
1.Вычислить:
Решение:
#include <iostream>
using namespace std;
int main()
{
double a, x, b;
cout << "X = ";
cin >> x;
cout << "a = ";
cin >> a;
cout << "b = ";
cin >> b;
if ((a > x) || (a == x))
cout << "Z = " << sin(x) << endl;
else if ((a < x) && (x < b))
cout << "Z = " << cos(x) << endl;
else if ((x > b) || (x == b))
cout << "Z = " << tan(x) << endl;
system("pause");
return 0;
}
2.Найти квадрат наибольшего из двух чисел a и b и отпечатать
N = 1, если наибольшим является а, и признак N = 2 ‑ в противном случае.
Решение:
#include <iostream>
using namespace std;
int main()
{
int a, b;
cin >> a >> b;
if (a * a > b * b)
cout << "N = 1" << endl;
else
cout << "N = 2" << endl;
system("pause");
return 0;
}
3.Определить, попадает ли точка с координатами х, у в круг радиуса r (уравнение окружности ). Вывести признак N = 1, если точка находится внутри круга, и признак N = 0, если точка находиться вне круга.
4.Составить программу, выполняющую упорядочение трех чисел A, B, C, таким образом, чтобы при выполнении ее в ячейке с символическим адресом A находилось наименьшее число, в ячейке B ‑ среднее, в ячейке C ‑ наибольшее.
Решение:
#include <iostream>
using namespace std;
int main()
{
double a, b, c;
cin >> a >> b >> c;
//можно просто рассмотреть все 6 возможных случаев
if ((b >= a) && (b >= c) && (a >= c)) swap(a, b);
else if ((b >= a) && (b >= c) && (c >= a)) { swap(a, b); swap(b, c); }
//cout << b << " " << c << " " << a << endl;
else if ((c >= a) && (c >= b) && (a >= b)) { swap(a, c); swap(b, a); }
//cout << c << " " << a << " " << b << endl;
else if ((c >= a) && (c >= b) && (b >= a)) swap(a, c);
//cout << c << " " << b << " " << a << endl;
else if ((a >= b) && (a >= c) && (c >= b)) swap(b, c);
//cout << a << " " << c << " " << b << endl;
system("pause");
return 0;
}
5.Записать указанное действие в виде одного условного оператора:
а) у =
Решение:
#include <iostream>
using namespace std;
int main()
{
double x;
cin >> x;
cout << "Y = " << ((0 < x) && (x < 2) ? cos(x) * cos(x) : 1 - sin(x) * sin(x)) << endl;
system(“pause”);
return 0;
}
б) переменной х присвоить корень уравнения .
Решение:
#include <iostream>
using namespace std;
int main()
{
double x;
cin >> x;
double y = asin(log(x))
system(“pause”);
return 0;
}
в) перераспределить значение переменных х и у так, чтобы в х оказалось большее из этих значений, а в у ‑ меньшее;
Решение:
#include <iostream>
using namespace std;
int main()
{
double x, y;
cin >> x >> y;
if (x < y)
swap(x, y);
cout << "x = " << x << endl
<< "y = " << y << endl;
system(“pause”);
return 0;
}
г) d = max (a, b, c);
Решение:
double max(double first, double second, double third)
{
if ((first > second) && (first > third))
return first;
else if (second > third)
return second;
else
return third;
}
double a, b, c;
cin >> a >> b >> c;
cout << "d = " << max(a, b, c) << endl;
д) z =
Решение:
double x, y;
cin >> x >> y;
if (x < 0)
cout << "Z = " << max(x, y) << endl;
else if (x >= 0)
cout << "Z = " << min(x, y) << endl;
е) переменной k присвоить номер четверти плоскости, в которой находится точка с координатами х и у (ху 0);
Решение:
double x, y;
cin >> x >> y;
if ((x > 0) && (y > 0))
cout << "k = 1" << endl;
else if ((x < 0) && (y > 0))
cout << "k = 2" << endl;
else if ((x < 0) && (y < 0))
cout << "k = 3" << endl;
else if ((y < 0) && (x > 0))
cout << "k = 4" << endl;
6.Записать программу для решения задачи:
а) по номеру у (у> 0) некоторого года определить с ‑ номер его столетия (учесть, что, к примеру, началом XX столетия был 1901);
Решение:
#include <iostream
using namespace std;
int main()
{
int y;
cin >> y;
int result = 1, year = 100;
while (year < y)
{
result++;
year += 100;
}
cout << result << endl;
system("pause");
return 0;
}
б) ;
Решение:
#include <iostream>
using namespace std;
double max(double first, double second, double third)
{
if ((first > second) && (first > third))
return first;
else if (second > third)
return second;
else
return third;
}
double min(double first, double second, double third)
{
if ((first < second) && (first < third))
return first;
else if (second < third)
return second;
else
return third;
}
int main()
{
double mx, mn, x, y, z;
cin >> x >> y >> z;
mx = max(x, y, z);
mn = min(x, y, z);
cout << "u = " << (mx * mx - pow(2, x) * mn) / (sin(2) + (mx / mn)) << endl;
system("pause");
return 0;
}
в) если уравнение ax2 + bx +c = 0 (a 0) имеет вещественные корни, то логической переменной t присвоить значение True, а переменным xl и х2 ‑ сами корни, иначе переменной t присвоить False, а значение переменных xl и х2 не менять;
Решение:
#include <iostream>
using namespace std;
int main()
{
double x1, x2, D, a, b, c;
bool t = true;
cin >> a >> b >> c;
D = b * b - 4 * a * c;
if (D < 0)
{
t = false;
cout << boolalpha << "t = " << t << "\nКорней нет.\n";
}
else if (D == 0)
{
x1 = (-b + sqrt(D)) / 2 * a;
cout << boolalpha << "t = " << t << "\nx1 = " << x1 << endl;
}
else
{
x1 = (-b + sqrt(D)) / 2 * a;
x2 = (-b - sqrt(D)) / 2 * a;
cout << boolalpha << "t = " << t
<< "\nx1 = " << x1
<< "\nx2 = " << x2 << endl;
}
system("pause");
return 0;
}
г) считая, что стандартные функции sin и cos применимы только к аргументам из отрезка [0, ], вычислить у = sin х для произвольного числа х;
Решение:
#include <iostream>
using namespace std;
const double pi = 3.14159265358979;
int main()
{
double x = 0;
double res;
cin >> x;
while (abs(x) >= 2 * pi)
{
if (x > 0)
x -= 2 * pi;
else
x += 2 * pi;
}
if ((x > 0) && (x <= pi / 2))
res = sin(x);
if ((x > pi / 2) && (x <= pi))
res = sin(x - pi / 2);
if ((x > pi && x) <= (3 * pi / 2))
res = -sin(x - pi);
if ((x > 3 * pi / 2) && (x < 2 * pi))
res = -sin(x - 3 * pi / 2);
cout << "sin(x) = " << res << endl;
system("pause");
return 0;
}
д) значения переменных а, b и c поменять местами так, чтобы оказалось а b c.
Решение:
#include <iostream>
using namespace std;
int main()
{
double a, b, c;
cin >> a >> b >> c;
if ((a >= b) && (a >= c) && (b >= c)) cout << a << " " << b << " " << c << endl;
else if ((b >= a) && (b >= c) && (a >= c)) cout << b << " " << a << " " << c << endl;
else if ((b >= a) && (b >= c) && (c >= a)) cout << b << " " << c << " " << a << endl;
else if ((c >= a) && (c >= b) && (a >= b)) cout << c << " " << a << " " << b << endl;
else if ((c >= a) && (c >= b) && (b >= a)) cout << c << " " << b << " " << a << endl;
else if ((a >= b) && (a >= c) && (c >= b)) cout << a << " " << c << " " << b << endl;
system("pause");
return 0;
}