C ++括号和格式问题,(未声明的标识符,本地函数定义是非法的)

时间:2013-09-23 22:31:47

标签: c++ function formatting

我是C ++的新手,我正在尝试制作一个计算素数因子的程序。我的算法大多没问题,但我不知道如何正确格式化功能,有人请帮我清理这个烂摊子

#include <iostream>
using namespace std;

void getPrimeFactor(int);

int factor(int fisrt, int last)
{
int i = 0;

for  (i = fisrt; i <= last; i++)

    int getPrimeFactor(int n)
{
    if (i < 0)
        i = -i;

    // For i < 2; it is just i
    if (i < 2)
        return i;

    // otherwise, for an even number it is 2
    if (i % 2 == 0)
        return 2;

    // for other odd numbers, search for a divisor
    // until SQRT (n) [conceptual] n / div >= div is
    // equivalent to SQRT (n) >= div

    for (int div = 3; i / div >= div; div += 2)
    {
        // if div is a divisor, just return it.
        if (i % div == 0)
            return div;
    }

    // There is no divisor (n is prime), return it.
    return i;
    }


return 0;
}

int main()
{

int fisrtN; int lastN; int counter; int answer;
    cin >> fisrtN;
cin >> lastN;
answer = factor(fisrtN, lastN);
return(0);
cout << "Prime is" answer; "  ";
}

1 个答案:

答案 0 :(得分:0)

你无法在另一个体内定义函数体。

这是带有原始缩进的代码的简化版本:

void getPrimeFactor(int);

int factor(int fisrt, int last)
{
...
for  (i = fisrt; i <= last; i++)

    int getPrimeFactor(int n)   // <-- illegal placement of function's definition
{
    ...
    return i;
    }
return 0;
}

int main()
{
...
return(0);          // <-- redundant line, 0 is return automatically
...                 // <-- code after return statement will never be executed
}

请注意,缩进代码确实很重要。难以阅读的代码也很难理解,更容易出错〜&gt;以后它可能会花费你一些时间。尽量保持代码清洁。

另请注意,在开始时您已声明以下原型:

void getPrimeFactor(int);

但稍后在代码中您尝试定义函数:

int getPrimeFactor(int n)