【发布时间】:2019-10-09 06:48:05
【问题描述】:
我正在尝试对totalRevenue 及其name 的最高值和第二个最高值进行排序。我试图以这种方式按降序对它们进行排序,但我无法弄清楚如何使其工作。谁能帮帮我?
前两个条目:
1002 Hammer 23.65 203
1024 Nails 6.95 400
代码如下:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
// Structure to hold statistics
struct Selling {
int productNumber;
string name;
double price;
int soldNumber;
double totalRevenue[];
};
int main()
{
ifstream statFile;
string productName;
double price;
int productNumber, soldNumber;
Selling *productArray[100];
Selling *aSelling;
int numProduct = 0;
int man = 0;
statFile.open("sales.txt");
while (numProduct < 100 && statFile >> productNumber >> productName >> price >> soldNumber)
{
Selling *aSelling = new Selling;
aSelling->productNumber = productNumber;
aSelling->name = productName;
aSelling->price = price;
aSelling->soldNumber = soldNumber;
aSelling->totalRevenue[] = aSelling->price * aSelling->soldNumber;
productArray[numProduct++] = aSelling;
//cout << aSelling->productNumber<< " " << aSelling->name << " " << aSelling->price << " " << aSelling->soldNumber << " " << aSelling->totalRevenue << endl;
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (aSelling->totalRevenue[i] > aSelling->totalRevenue[j]) {
man = aSelling->totalRevenue[i];
aSelling->totalRevenue[i] = aSelling->totalRevenue[j];
aSelling->totalRevenue[i] = man;
}
}
}
for (int i = 0; i < 2; i++) {
cout << "The top selling product is " << aSelling->name << "with total sales of " << aSelling->totalRevenue[i] << endl;
cout << "The second top selling product is " << aSelling->name << "with total sales of " << aSelling->totalRevenue[i - 1] << endl;
}
}
在aSelling->totalRevenue[] = aSelling->price * aSelling->soldNumber; 行有一个我不理解的意外表达式错误。
【问题讨论】:
-
aSelling->totalRevenue[???]- 您需要访问数组中的元素。[]本身毫无意义。但是double totalRevenue[]到底是什么意思呢?您只需要一个值,而不是数组吗?然后使用double totalRevenue。 -
@Minh Nguyen 你为什么不使用 std::vector?
-
另外,这是某种家庭作业,您可以使用标准库的哪些部分受到限制?
-
请描述你想用你的程序做什么。
double totalRevenue[];是指针。你不为它分配内存。你不能给它赋值。
标签: c++ sorting pointers struct