正整数的和,使用函数

Sum of positive integers, using functions.

本文关键字:函数 整数      更新时间:2023-10-16

我试图将这个问题分解为函数,但我的问题是,当我打印出结果时,总是得到不同的和、正和负计数。

有人能给我一个提示吗?

编写一个程序,读取十个整数,并输出其中所有正数的和。程序应忽略所有小于或等于0的数字。程序还应显示正数计数和负数计数或零。

#include <iostream>
using namespace std;
void input(int number, int positiveCount, int negativeCount, int sum);
void output(int positiveCount, int negativeCount, int sum);
int main()
{
int number, positiveCount, negativeCount, sum;
input(number, positiveCount, negativeCount, sum);
output(positiveCount, negativeCount, sum);

return 0;
}
void input(int number, int positiveCount, int negativeCount, int sum)
{
cout << "Enter 10 integers: " << endl;
for (int i = 0; i < 10; i++)
{
    cin >> number;
    if (number > 0)
    {
        positiveCount++;
        sum = sum + number;
    }
    else
    {
        negativeCount++;
    }
 }

}
void output(int positiveCount, int negativeCount, int sum)
{
     cout << sum << endl;
     cout << positiveCount << endl;
     cout << negativeCount << endl;
}

input()函数需要通过引用获取其参数,以便对其进行修改。您需要在开始时将所有这些int初始化为0,否则它们包含垃圾。

您在input()函数内所做的操作将丢失,因为变量的作用域仅在函数内。

在将参数传递到input()函数时,需要使用指针或引用,以免使用本地副本。

在使用指针时,还需要取消引用。并在传递给函数之前将变量初始化为0。

因为您的程序中存在严重错误。您在函数main()中定义了四个局部变量,并在调用函数input()时按值发送它们。此函数不修改函数main()中定义的变量。它只是修改它们的副本。当您的input()功能失效时,这些副本将被删除。

为了修改它们,您应该使用参考:

void input(int &number, int &positiveCount, int &negativeCount, int &sum);

但在函数main()中创建四个整数并在函数input()output()中发送它们没有意义。您可以在input()中创建四个局部变量,然后在此函数中打印它们。那么您不应该定义函数output(),您可以在代码中删除它。也就是说,你应该修改你的程序。

在你的作业中写着:

编写一个程序,读取十个整数并输出其中所有的正数

因此,没有必要为这个简单的程序编写单独的函数。它看起来像

#include <iostream>
int main() 
{
    const size_t N = 10;
    std::cout << "Enter " << N << " integers: ";
    size_t i = 0, count = 0;
    long long sum = 0;
    int num;
    for ( ; i < N && std::cin >> num; i++ )
    {
        if ( num > 0 )
        {
            sum += num;
            ++count;
        }
    }
    std::cout << "You have entered " << count << " positive numbersn"
              << "and " << i - count << " negative numbers or seroesn"
              << "Sum of positive numbers is " << sum << std::endl;
    return 0;
}

如果您想编写单独的函数,那么例如,函数输入可以声明为

long long input( size_t &positive_count, size_t &negative_count );

long long input( size_t &total_count, size_t &positive_count );

long long input( size_t *positive_count, size_t *negative_count );

long long input( size_t *total_count, size_t *positive_count );