Это сделает логическое выражение (a mod 2)+(b mod 2) = 1 ОБЪЯСНЕНИЕ: Оператор mod возвращает остаток от целочисленного деления операндов. a mod 2 будет равно нулю, если a четное или единице, если а нечетное. То же верно и для b mod 2. Рассмотрим поведение суммы (a mod 2)+(b mod 2) при различных комбинациях a и b 1. Оба нечетных. Сумма равна 1+1, т.е. 2 2. Одно четное, другое нечетное. Сумма равна 1+ 0 (или 0+1), т.е. 1 3. Оба четных. Сумма равна 0+0, т.е. 0. Следовательно, сумма равна единице тогда и только тогда, когда одно из чисел четное, а другое нечетное. Оставшаяся часть выражения превращает его в логическое, проверяя условие 1=1. Предлагаемое логическое выражение может быть использовано как в качестве правой части оператора присваивания, так и в качестве логичесвого выражения в операторах if-then-else или циклов while, repeat.
Нужно найти максимальное и минимальное из трёх чисел. Пусть даны три числа x, y, z Пусть: m = min{x, y, z}, M = max{x, y, z}, r = max - min; Теперь остаётся записать в качестве ответа число r, оно и будет разницей.
На C++ написал бы так: #include <iostream> using namespace std;
int maxNum(int x, int y, int z) { if ((x>=y)&&(x>=z)) return x; else if ((y>=x)&&(y>=z)) return y; else return z; }
int minNum(int x, int y, int z) { if ((x<=y)&&(x<=z)) return x; else if ((y<=x)&&(y<=z)) return y; else return z; }
void main() { setlocale(0, "Rus"); int x, y, z; cout << "Введите через пробел 3 числа" << endl; cin >> x >> y >> z; cout << "Разница : " << maxNum(x,y,z) - minNum(x,y,z) << endl; }
(a mod 2)+(b mod 2) = 1
ОБЪЯСНЕНИЕ:
Оператор mod возвращает остаток от целочисленного деления операндов.
a mod 2 будет равно нулю, если a четное или единице, если а нечетное. То же верно и для b mod 2. Рассмотрим поведение суммы (a mod 2)+(b mod 2) при различных комбинациях a и b
1. Оба нечетных. Сумма равна 1+1, т.е. 2
2. Одно четное, другое нечетное. Сумма равна 1+ 0 (или 0+1), т.е. 1
3. Оба четных. Сумма равна 0+0, т.е. 0.
Следовательно, сумма равна единице тогда и только тогда, когда одно из чисел четное, а другое нечетное.
Оставшаяся часть выражения превращает его в логическое, проверяя условие 1=1.
Предлагаемое логическое выражение может быть использовано как в качестве правой части оператора присваивания, так и в качестве логичесвого выражения в операторах if-then-else или циклов while, repeat.
Пусть даны три числа x, y, z
Пусть:
m = min{x, y, z},
M = max{x, y, z},
r = max - min;
Теперь остаётся записать в качестве ответа число r, оно и будет разницей.
На C++ написал бы так:
#include <iostream>
using namespace std;
int maxNum(int x, int y, int z)
{
if ((x>=y)&&(x>=z))
return x;
else if ((y>=x)&&(y>=z))
return y;
else
return z;
}
int minNum(int x, int y, int z)
{
if ((x<=y)&&(x<=z))
return x;
else if ((y<=x)&&(y<=z))
return y;
else
return z;
}
void main()
{
setlocale(0, "Rus");
int x, y, z;
cout << "Введите через пробел 3 числа" << endl;
cin >> x >> y >> z;
cout << "Разница : " << maxNum(x,y,z) - minNum(x,y,z) << endl;
}