[英]How can I get multiple numbers from a user and add even numbers together and multiply odd numbers?
我想编写一个程序,它需要 5 个输入并添加偶数并乘以奇数,但是在我知道哪个数字是奇数和哪个是偶数之后我不知道该怎么做。
#include<iostream>
using namespace std;
int main(){
int a, b, c, d, e, sum1, sum2, sum3, sum4, sum5, sum6, sum7, sum8, sum9, sum10;
cout<<"Please Enter 5 Integers\t:\t";
cin>>a>>b>>c>>d>>e;
if(a%2==0 && b%2==0)
{
cout<<a+b;
sum1 = a+b;
}
if(a%2==0 && c%2==0)
{
cout<<a+c;
sum2 = a+c;
}
if(a%2==0 && d%2==0)
{
cout<<a+d;
sum3 = a+d;
}
if(a%2==0 && e%2==0)
{
cout<<a+e;
sum4 = a+e;
}
if(b%2==0 && c%2==0)
{
cout<<b+c;
sum5 = b+c;
}
if(b%2==0 && d%2==0)
{
cout<< b+d;
sum6 = b+d;
}
if(b%2==0 && e%2==0)
{
cout<<b+e;
sum7 = b+e;
}
if(c%2==0 && d%2==0)
{
cout<< c+d;
sum8 = c+d;
}
if(c%2==0 && e%2==0)
{
cout<<c+e;
sum9 = c+e;
}
if(d%2==0 && e%2==0)
{
cout<<d+e;
sum10 = d+e;
}
return 0;
}
您不需要所有这些变量,当然也不需要一次检查每个变量组合。 一个简单的循环就足够了。
尝试更多类似的东西:
#include <iostream>
using namespace std;
int main(){
int number, sum = 0, product = 1;
cout << "Please Enter 5 Integers\t:\t";
for(int i = 0; i < 5; ++i)
{
cin >> number;
if (number % 2 == 0)
sum += number;
else
product *= number;
}
cout << sum << ' ' << product << endl;
return 0;
}
这是一个非常粗略且相对简单的解决方案。 如果输入不能转换为 int,则会引发异常。 而且由于没有在任何地方捕获异常,因此如果用户输入无效输入,程序就会退出。
std::vector
与数组大致相同。 它使您不必声明 5 个变量,而是将所有输入值存储在向量中。
stoi()
function 将字符串转换为integer ( stoi = 字符串到整数)。
#include <iostream>
#include <vector>
#include <string>
int main() {
bool outputSum, outputProduct = false;
std::vector<int> input;
for (int i = 0; i < 5; i++) {
std::string entered_string;
int entered_value = 0;
std::cout << "Please enter a number: ";
std::cin>>entered_string;
entered_value = stoi(entered_string);
input.emplace_back(entered_value);
}
int sum = 0;
int product = 1;
for (int i = 0; i < 5; i++) {
if (input[i] % 2 == 0) {
sum += input[i];
outputSum = true;
} else {
product *= input[i];
outputProduct = true;
}
}
if (outputSum) {
std::cout << "Sum: " << sum << std::endl;
}
if (outputProduct) {
std::cout << "Product: " << product << std::endl;
}
return 0;
}
我假设您不想在最后添加总和和乘积,因为您没有具体说明您希望 output 是什么。
对循环的理解使这段代码非常简单。 您存储这五个数字,但它们彼此断开连接,因为它们存储在单独的变量中。 现在你必须编写你所拥有的许多测试,这是一团糟,你觉得必须有一个更简单的方法。
正如其他答案所示,如果您以后不需要使用数字,那么您不需要五个变量进行输入; 一个就足够了。 您将输入存储到一个变量中,检查它是否是偶数/奇数,并相应地更新 sum 或 product 变量。 循环的重复使这项工作。
如果您需要显示数字或以其他方式保留它们以用于其他目的,则数组(或本例中的std::vector
)会派上用场。
下面的代码演示了一个可以生成总和或乘积的 C++ 标准库 function ( std::reduce()
)。 其他答案很好地展示了如何手动计算这些值。 重申一下,只有当您需要其他任务的数字时,才认为该解决方案是可行的。
#include <functional> // std::multiplies
#include <iostream>
#include <numeric> // std::reduce
#include <vector>
void print_container(std::vector<int> v) {
for (auto i : v) {
std::cout << i << ' ';
}
std::cout << '\n';
}
int main() {
constexpr int numInputs = 5;
std::vector<int> evenNums;
std::vector<int> oddNums;
for (int tmp, i = 0; i < numInputs && std::cin >> tmp; ++i) {
tmp & 1 ? oddNums.push_back(tmp) : evenNums.push_back(tmp);
}
int sum = std::reduce(evenNums.begin(), evenNums.end(), 0);
int product = std::reduce(oddNums.begin(), oddNums.end(), 1,
std::multiplies<int>());
std::cout << "Even numbers: ";
print_container(evenNums);
std::cout << "Odd numbers: ";
print_container(oddNums);
std::cout << "Sum of evens: " << sum << "\nProduct of odds: " << product << '\n';
}
Output(输入为 1 2 3 4 5):
Even numbers: 2 4
Odd numbers: 1 3 5
Sum of evens: 6
Product of odds: 15
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.