Я пытался написать программу для упражнения 2.19 в разделе «Как программировать», но столкнулся с некоторыми трудностями.
Предполагается, что программа должна ввести три целых числа, а затем отобразить sum
, average
, а также product
из этих целых чисел.
Единственная проблема, с которой я сталкиваюсь — это отображение самых больших и самых маленьких. Когда я запустил программу и ввел три целых числа (8, 9, and 10)
, вывод прочитан Smallest is 8
AND
Smallest is 9
,
Я надеялся, что ты скажешь мне почему.
#include <iostream>
using namespace std;
int main ()
{ int x, y, z, sum, ave, prod;
cout << "Input three different integers ";
cin >> x >> y >> z;
sum = x + y + z;
cout << "\nThe sum is " << sum;
ave = (x + y + z) / 3;
cout << "\nThe average is " << ave;
prod = x * y * z;
cout << "\nThe product is " << prod;
if (x < y, x < z)
{cout << "\nSmallest is " << x;}
if (y < x, y < z)
{cout << "\nSmallest is " << y;}
if (z < x, z < y)
{cout << "\nSmallest is " << z;}
if (x > y, x > z)
{cout << "\nLargest is " << x << endl;}
if (y > x, y > z)
{cout << "\nLargest is " << y << endl;}
if (z > x, z > y)
{cout << "\nLargest is " << z << endl;}
return 0;
}
Постскриптум Я делаю это, чтобы учиться, это не домашнее задание.
Вам нужно переписать это, если условие
if (x < y, x < z)
быть
if (x < y && x < z)
и сделайте то же самое для всех остальных, если у вас есть условия.
Редактировать:
Все эксперименты, разделенные запятой, будут оцениваться, так что если у вас есть что-то подобное
x = 5, y = 6;
он оценит их обоих и установит x на 5 и y на 6
но
z = (x=5, y=6);
это приведет к тому, что для z будет установлено значение 6 так же, как у, так как y = 6 был последним членом в списке терминов, разделенных запятыми.
int main() {
std::cout << "Enter three numbers: ";
int sum = 0;
double avg = 0.;
int product = 0;
int smallest = std::numeric_limits<int>::max();
int largest = std::numeric_limits<int>::min(); // the initializers here might not be correct, but the gist is in place...
for (int i = 0; i < 3; ++i) {
int val = 0;
std::cin >> val;
sum += val;
avg += val;
product *= val;
if (val < smallest) smallest = val;
if (val > largest) largest = val;
}
avg /= 3.; // This can also be done in the for loop, I just forget how.
std::cout << "Sum: " << sum;
// etc... The calculations are all done.
}
Замените запятые на && для оператора AND, означающего, что оба условия должны быть истинными, или || который является оператором ИЛИ, если вы хотите, чтобы выполнялись какие-либо или оба условия.
из документов C ++:
The comma operator (,) is used to separate two or more expressions that are included
where only one expression is expected. When the set of expressions has to be evaluated
for a value, only the rightmost expression is considered.
Вместо запятой &&
то есть
if (x < y , x < z)
{cout << "\nSmallest is " << x;}
должно быть
if (x < y && x < z)
{cout << "\nSmallest is " << x;}
использование &&
на месте ,
внутри ваших условий.
Теперь вы понимаете, что &&
для AND, и что вы должны использовать этот оператор вместо запятой, ,
, Но знаете ли вы, что вы также можете использовать их ключевое слово and
вместо его символа эквивалент?
if ( x < y and x < z ) {
}