我正在尝试创建一个C ++程序,它使用对象将存储在数组中的整数从最大到最小排序

时间:2017-10-18 04:40:45

标签: c++ arrays

我是新手 - 我的面向对象编程类简介的项目。任何帮助都会非常感激。 所以我开始创建BubbleSort类和成员函数。 sort应该采用长度为10的整数数组,并从最大到最小打印它们。我提供了一个指向我老师给我们的一些代码的链接,以帮助我们完成任务。对不起,如果这太模糊,我相信我的整体设计有问题。感谢您的时间。我在Xcode中也遇到以下错误 预期'('用于功能式演员或类型构造 和 未使用的变量' nArray' enter image description here

#include <iostream>
using namespace std;

// class declaration
class BubbleSort
{
public:
    BubbleSort(); //initialize nArray to contain set of unsorted numbers
    void sort(int nArray []); //sort array
private:
    int nArray[];  //stores the unsorted numbers
};


BubbleSort :: BubbleSort()  {    //default constructor
    int nArray [] = {256, 734, 201, 3, 123, 40, 99, 257, 7, 609};
}




void BubbleSort :: sort (int nArray []) { //prints the highest number

    int highest = nArray[0]; //highest value of the array
    int index = 0; //index of the highest value of the arrray
    int count = 0; //counts the time you check the array

while (count != 10) {

    for (int i = 0; i < 10; i++) {
        if (nArray[i] > highest) {
            highest = nArray[i];
            index = i;
        }
    }

    cout << "The highest value at that moment: " << highest << endl;
    nArray[index] = 0;
    highest = 0;
    count ++;
}
}



int main() {

    BubbleSort myArray; //create object
    myArray.sort(int myArray[])

return 0;
}

2 个答案:

答案 0 :(得分:2)

您声明的字段为array,没有任何指定的维度。这在C ++中是错误的。 (请注意,C有flexible array members,但标准C ++没有它们。

至少,将维度声明为宏:

#define ARRAY_SIZE 10

或作为常数:

static constexpr int ARRAY_SIZE= 10;

然后声明具有该大小的字段:

int nArray[ARRAY_SIZE];

在正版C ++中,更好地使用标准containers。您应该使用std::vectorstd::array ....

使用GCC编译所有警告和调试信息:g++ -Wall -Wextra -g然后使用调试器 gdb逐步运行程序,查询其状态,因此,了解什么是错的。

作为成员函数的sort不需要将数组作为参数。

您在多个scopes中声明了几个不同的 nArray。这是令人困惑的,不要使用同义词(所以不要声明几个nArray - s,使用不同的名称。)

花更多时间阅读一本好的C ++编程书,一些C++ reference,以及编译器和调试器的文档。

请注意,Xcode不是您的编译器,而只是IDE(正在运行一些外部编译器 - 可能是GCCClang - 下面)。我建议使用命令行在终端中运行编译器。

答案 1 :(得分:0)

  1. 不建议使用using namespace std; - 因为它从std导入所有标识符。请在Stack Overflow上查看此问题。

  2. 如前所述,最好使用标准容器,如std :: vector

  3. 我知道老师给你的分配是学习过程的一部分,但是为了按照升序对数组中的元素进行排序,你也可以使用std::sort