【发布时间】:2019-02-18 07:01:32
【问题描述】:
我正在尝试完成一项任务。这是一个从文本文件中读取销售数据、对数据进行排序并将排序后的数据输出到第二个文件的程序。输入文件是逗号分隔值文件 (CSV),第一项是要处理的销售数据项的数量,然后是一行销售数据的列表(项目以逗号分隔)。每个销售数据项都是十进制数。但我必须在包括 main() 在内的 4 个函数中执行此操作,这是我遇到最多问题的地方
示例输入:
5,453.67,8769.57,221.87,600.28,8123.00
我对如何在文件中读取以及如何对数据进行排序感到困惑。
int main() {
string filename, newFilename;
ifstream infile("salesData.csv");
//cout << "What file do you want to open? " << endl;
//cin >> filename;
int size = 0;
getSalesData(size, filename);
selectionSortArray(filename, size);
ofstream outputFile;
writeTofile(outputFile, filename);
system("pause");
return 0;
}
double * getSalesData(int &size, string &filename)
{
ifstream inputfile;
inputfile.open(filename);
double * salesData = new double[size];
inputfile.close();
return salesData;
}
//******************************************************************
// selectionSortArray
// task: to sort values of an array in ascending order // data in: the array, the array size // data out: the sorted array
//******************************************************************
void selectionSortArray(string &filename, int length){}
// copy data to output file
void writeTofile(ofstream &outputFile, string x)
{
outputFile.open(x.c_str());
outputFile.close();
}
我希望看到样本输入 5,453.67,8769.57,221.87,600.28,8123.00 被排序
【问题讨论】:
-
请get a couple of good books to read。这应该教你所有你需要知道的关于如何从文件中读取的知识。它还应该告诉您将
std::vector用于“动态数组”。 -
请把这个问题变成一个单一编程问题的重点问题。例如。首先在工作中阅读。问一个关于第一个严肃的、集中的编程问题的问题。然后开始工作(也许询问)关于排序的工作。然后开始工作(也许询问输出)。也许按顺序处理输入、输出、排序。
-
我想重申一些程序员老兄所说的话。函数对于良好的编程实践至关重要且必不可少。什么是函数?函数是您期望得到的回报。 f(x) = 2x + 1。当你插入 x = 2 时会发生什么? x = 4怎么样?当你给一个函数一些东西时,你应该期待一些回报。在这种情况下,您知道您的三个函数应该做什么,但是您的输入应该是什么?
-
为了把它变成一个输入问题。请详细说明让您感到困惑的地方。什么不起作用?可以直接读取输出吗? (即通过不尝试实际存储您阅读的内容来简化。
-
@Sailanarmo 我觉得你误解了 Somes 的意图。考虑使用“@”符号来 ping 他。