使用C++编写程序
题目描述
统计给定的n个数中,负数、零和正数的个数。
输入
输入的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个整数
输出
输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
样例输入 Copy
6
0 1 2 3 -1 0
样例输出 Copy
1 2 3
程序代码如下
#include<iostream>
#include<algorithm> //count()和count_if()的头文件
#include<functional> //用了less<>()和greater<>()
#include<vector> //顺序容器vector的头文件
#define ElemType_I int
using namespace std;
class Statistics
{
public:
Statistics(ElemType_I N);
void GetResult();
private:
ElemType_I Count_Negative = 0; //统计负数
ElemType_I Count_Zero = 0; //统计零
ElemType_I Count_Positive = 0; //统计正数
ElemType_I ElementNumber; //需要统计的数值的个数
//ElemType_I *Element = new ElemType_I[ElementNumber]; //动态创建一个数组用于存放元素
vector<ElemType_I> Element;
};
inline Statistics::Statistics(ElemType_I N)
{
ElementNumber = N;
for (int i = 0; i < ElementNumber; i++)
// cin >> Element[i];
{
ElemType_I Num;
cin >> Num;
Element.push_back(Num);
}
}
inline void Statistics::GetResult()
{
for (int i = 0; i < ElementNumber; i++)
{
if (Element[i] < 0)
Count_Negative++;
else if (Element[i] == 0)
Count_Zero++;
else
Count_Positive++;
}
/*
Count_Negative = count_if(Element, Element + ElementNumber, bind2nd(less<ElemType_I>(), 0)); //小于0
Count_Zero = count(Element, Element + ElementNumber, 0); //等于0
Count_Positive = count_if(Element, Element + ElementNumber, bind2nd(greater<ElemType_I>(), 0)); //大于0
*/
/*
Count_Negative = count_if(Element.begin(), Element.end(), bind2nd(less<ElemType_I>(), 0)); //小于0
Count_Zero = count(Element.begin(), Element.end(), 0); //等于0
Count_Positive = count_if(Element.begin(), Element.end(), bind2nd(greater<ElemType_I>(), 0)); //大于0
*/
cout << Count_Negative << " " << Count_Zero << " " << Count_Positive;
}
int main()
{
ElemType_I N;
cin >> N;
Statistics Sta_Number(N);
Sta_Number.GetResult();
return 0;
}