我是C ++的新手,并且有一个编辑此代码的工作分配。出于某种原因,当我使用多个正数或负数的组合时,它给出了我输入多个数字的额外数字的答案。
示例:
我输入3个正数和1个负数。计数器显示4个正面和1个负面。如果我从负数而不是正数开始,也会发生同样的事情。
非常感谢任何帮助。这是代码:
#include <iostream>
using namespace std;
int main()
{
int number = 0;
int positive = 0; //counter
int negative = 0; //counter
int totalPositive = 0;
int totalNegative = 0;
//get a number
cout << "Enter a positive or negative integer (enter 0 to end): ";
cin >> number;
while (number != 0)
{
//update counters
if (number > 0)
{
positive =+ 1;
}
else
negative =+ 1;
//end if
//get another number
cout << "Enter another positive or negative integer (enter 0 to end): ";
cin >> number;
totalPositive += positive;
totalNegative += negative;
}//end while
//display counters
cout << endl;
cout << "Total positive numbers: " << totalPositive << endl;
cout << "Total negative numbers: " << totalNegative << endl;
system("pause");
return 0;
} //end of main function
答案 0 :(得分:1)
totalPositive
正在积累,但totalPositive++
正在积累你的积累。在if
语句中尝试positive
(以及否定版本),并删除变量negative
和{{1}}。
答案 1 :(得分:1)
首先请注意=+
不是运算符(与增加值的+=
不同)
该行
positive =+ 1
只是解释为分配+1
为正(这是你想要的)但可以写成
positive = 1
这虽然带来了实际的一点,即每次循环时你都不会将正或负重置为零。
正面和负面都分配给1
(即,当您至少输入其中一个时),每次totalPositive
和totalNegative
都会增加。
您可能想要考虑是否需要变量为正数或负数。
答案 2 :(得分:1)
您的计划中的逻辑错误是,positive
和negative
一旦设置为0
,就永远不会重置为1
。
如果你的前两个数字是一个是负数而另一个是正数,那么totalPositive
和totalNegative
会随之增加,而不管number
的值是多少
您可以将逻辑简化为:
//get a number
cout << "Enter a positive or negative integer (enter 0 to end): ";
while (cin >> number && number != 0)
{
//update counters
if (number > 0)
{
++totalPositive;
}
else
{
++totalNegative;
}
//get another number
cout << "Enter another positive or negative integer (enter 0 to end): ";
}//end while
答案 3 :(得分:1)
试试这段代码:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
int number;
int positive = 0;
int negative = 0;
do{
cout << "Enter a positive or negative integer (enter 0 to end): ";
cin >> number;
if (number > 0)
positive += 1;
else if(number<0)
negative += 1;
}while(number!=0);
//end while
//display counters
cout << endl;
cout << "Total positive numbers: " << positive << endl;
cout << "Total negative numbers: " << negative << endl;
system("pause");
return 0;
} //end of main function
您不必使用total positive
和total negative
,除非您希望得到正数和负数的总和。
答案 4 :(得分:0)
可能有用的东西就是为while循环执行此操作
while (number != 0)
{
positive = 0;
negative = 0;
//update counters
if (number > 0)
{
positive = 1;
}
else
negative = 1;
//end if
//get another number
cout << "Enter another positive or negative integer (enter 0 to end): ";
cin >> number;
totalPositive +=positive;
totalNegative +=negative;
}
否则你每次循环运行时都会做这个基本上是1 + 2 + 3 + 4 ...的事情。通过将每个值设置为0,可确保totalPositive仅在每个循环中增加一次。否则它会呈指数级增长
答案 5 :(得分:0)
循环结束后,你的计数器不会重置为0。
第一次进入循环时,计数器为0(正,负),但第二次,计数器仍为1,导致计数器错误。
进入循环时:
positive = 0;
negative = 0;
//update counters
这段代码可以进行高度重构,以提高效率,但这是另一个问题。