[英]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.