![](/img/trans.png)
[英]Beginner to C++ - How to sum up only positive or only negative integers the user inputs and how to calculate the avg
[英]How do I calculate the sum in-between two negative integers c++
我创建了一个函数,该函数应该能够计算2个整数(正负)之间的加法,乘法和平方根。 但是,我的代码仅适用于正整数。
例如,如果我插入3和5,它将计算(3)+(4)+(5)= 12,但是如果我输入-3和-5,答案将为0。如果我输入5,也会发生相同的情况作为我的第一个整数,然后是3作为我的第二个整数,而不是第3个然后是5。我无法弄清楚我的代码出了什么问题。 我非常感谢您的指导并为我的问题提供帮助!
int calculate(int num1, int num2, char op) {
int answer, x;
if (op == 'a') {
answer = 0;
for (x = num1; x <= num2; x++) {
answer += x;
}
}
if (op == 'm') {
answer = num1;
for (x = num1 + 1; x <= num2; x++) {
answer = answer * (x);
}
if (op == 's') {
answer = 0;
for (x = num1; x <= num2; x++) {
answer = answer + (x * x);
}
}
}
return answer;
}
最简单的方法是在交换两个输入的函数的开头添加一行,以便较小的输入始终排在最前面:
#include <utility> // std::swap is in utility
int calculate(int num1, int num2, char op) {
if(num1 > num2) {
std::swap(num1, num2);
}
int answer = 0;
if (op == 'a') {
for (int x = num1; x <= num2; x++) {
answer += x;
}
}
if (op == 'm') {
answer = num1;
for (int x = num1 + 1; x <= num2; x++) {
answer = answer * x;
}
}
if (op == 's') {
for (int x = num1; x <= num2; x++){
answer = answer + x*x;
}
}
return answer;
}
根据两个给定整数的值,循环时可能必须向上或向下移动。 您需要根据num2-num1的符号来增加或减少,而不是增加。
更换
for (x = num1; x <= num2; x++)
与
for (x = num1; x <= num2; x+=sign(num2-num1))
哦,但是C或C ++中有sign()函数吗? 它应返回-1、0或+1,具体取决于其一个参数为<0、0或> 0。
请参阅: C / C ++中是否有标准的符号函数(signum,sgn)? 和https://helloacm.com/how-to-implement-the-sgn-function-in-c/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.