Circle类和类成员的打印向量问题

时间:2017-04-24 05:36:37

标签: c++

我的代码存在一些问题。

我可以对半径的矢量进行排序并打印它们,但是它会对数字进行四舍五入并切断小数,我不确定如何修复它。

我遇到的另一个问题是尝试显示其旁边每个半径的区域,我无法正确调用类功能“区域”以显示相应半径旁边的区域。

我道歉,我是C ++的新手,我尽力解释我的问题。

我知道我的代码有点简陋,所以任何指针也会受到赞赏。此外,任何有关打印矢量和获得显示区域的帮助也将受到赞赏。感谢。

这是课程部分:

#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>

using namespace std;

class Circle {

private:

    double radius;  // Radius of circle

public:

    // Default constructor
    Circle() {
        radius = 0.0;
    }
    // Set the radius of the circle
    void setRadius(double r) {
        radius = r;
    }
    // Get the radius of the circle
    double getRadius() {
        return radius;
    }
    // Calculate the area of the circle using current radius
    double area() {
        return(3.1416 * radius * radius);
    }
};

void printVector(vector<int>);
void bubbleSort(vector<int> &);

这是主要的:

int main(int argc, char** argv) {
cout << "Sorted Vector of Circles" << endl;
cout << "------------------------" << endl;
const int SIZE = 10;
Circle circle;
vector<int> circles;

Circle c1;
c1.setRadius(2.5);
circles.push_back(c1.getRadius());

Circle c2;
c2.setRadius(3.5);
circles.push_back(c2.getRadius());

Circle c3;
c3.setRadius(1.0);
circles.push_back(c3.getRadius());

Circle c4;
c4.setRadius(5.5);
circles.push_back(c4.getRadius());

Circle c5;
c5.setRadius(4.8);
circles.push_back(c5.getRadius());

Circle c6;
c6.setRadius(6.0);
circles.push_back(c6.getRadius());

Circle c7;
c7.setRadius(2.75);
circles.push_back(c7.getRadius());

Circle c8;
c8.setRadius(10);
circles.push_back(c8.getRadius());

Circle c9;
c9.setRadius(0.5);
circles.push_back(c9.getRadius());

Circle c10;
c10.setRadius(9.5);
circles.push_back(c10.getRadius());

bubbleSort(circles);
printVector(circles);

return 0;
}

排序功能:

void bubbleSort(vector<int> &radii){
int temp;
bool swap;
do {
    swap = false;
    for(int count = 0;count < radii.size()-1; count++){
        if (radii[count] > radii[count+1]) {
            temp = radii[count];
            radii[count] = radii[count + 1.];
            radii[count+1] = temp;
            swap = true;
        }
    }
} while (swap);


}

打印功能:

void printVector(vector<int> radii) {
cout << "Radius" << endl;
cout << "" << endl;
for (int count = 0; count < radii.size(); count++) {
    cout << setw(2) << radii[count] << setprecision(2) << " " << 
radii[count.area()] << " "; // main issue is with this section of code
cout << endl;
}   

}

1 个答案:

答案 0 :(得分:2)

使用onPostExecute()代替std::vector<double>

没有任何名为std::vector<int>的内容。 count.area()count变量而不是integer

如果要打印该区域,则必须将另一个矢量(即应首先创建一个)传递给打印函数。