在之前的练习中,我编写了一个程序,它接受了两个输入并打印出两个数字之间的数字。在练习1.19中,我被要求重写程序,以便它可以处理小于第二个数字的第一个数字的问题。我问了两个问题:
我觉得好像我用if语句玩了一个肮脏的把戏 只需按正确的顺序切换数字。那不好吗 编码
我写的作品,它“处理”用户输入的问题 小于第二个的数字。但是因为我很新 编程,仅在C ++入门的第1章中。我错过了 这里重要的东西会让我编写代码 “更好”(EX:如果我理解X概念那么我会写“if” 声明更好/不同)
int main()
{
int v1 = 0, v2 = 0, e1 = 0, e2 = 0, sum = 0;
std::cout << "Input first integer: ";
std::cin >> v1; std::cout << std::endl;
e1 = v1;
std::cout << "Input secound integer: ";
std::cin >> v2; std::cout << std:: endl;
if (v1 > v2)
{
e1 = v1;
e2 = v2;
v1 = e2;
v2 = e1;
e1 = v1;
}
while (v1 <= v2)
{
sum += v1;
++v1;
}
std::cout << "The inclusive sum of " << e1 << " and " << v2 << " is "
<< sum;
return 0;
}
答案 0 :(得分:0)
要回答您的第二个问题(间接是第一个问题),我建议您使用C ++标准库中的swap
函数。你可以查看here。通常,使用STL代码比自己编写函数更好(出于显而易见的原因)。
因此,要在代码中实现它,首先需要:
#include <algorithm>
然后在第一个if语句的正文中,只说:
std::swap(v1, v2);
答案 1 :(得分:0)
您只能使用一个额外的变量,并大大简化您的if
。
int v1 = 0, v2 = 0, sum = 0;
std::cout << "Input first integer: ";
std::cin >> v1; std::cout << std::endl;
std::cout << "Input secound integer: ";
std::cin >> v2; std::cout << std:: endl;
if (v1 > v2)
{
int tmp = v1; // Store v1 in a temp variable
v1 = v2; // Move v2's value into v1
v2 = tmp; // Move temp variable into v2
}
答案 2 :(得分:0)
我为此所做的是if else
int main()
{
int val1 = 0, val2 = 0, sum = 0;
std::cout << "Enter in 2 numbers " << std::endl;
std::cin >> val1;
std::cin >> val2;
// if the first value is smaller than the second then do below
if(val1<val2)
{
sum = val1; // setting sum equal to the first value entered
while(val1<=val2) // run while val1 is less than or equal to val2
{
std::cout << sum << std::endl; // printing sum
sum++; // adding +1 to sum
val1++; // adding +1 to val1 otherwise it will print sum to infinity
}
}
else // If the second value is smaller than the first entered do below
{
sum = val2; // setting sum equal to the second value entered
while(val2<=val1)
{
std::cout << sum << std::endl;
sum++; // adding +1 to sum
val2++; // adding +1 to val2 otherwise it will print sum to infinity
}
}
std::cout << "woot!" << std::endl;
return 0;
}
摆脱了交换。花了一点时间才得到它。我认为我不需要添加val1++
或val2++
,所以它只是尽快打印出数字。很酷看,但不是我想要的。希望这有助于某人!
注意:我的问题与问题有点不同。添加一组数字,但我相信可以使用相同的逻辑。