好的,所以我之前发布了相同的问题并获得了数组/矢量等方面的帮助。我修复了人们告诉我的一切,但现在我遇到的问题是我的程序只给了我一堆错误。而这一次,我真的不知道出了什么问题。这对我来说非常有意义,但它显然不适合电脑而且我只是一个新手。
所以这就是我想要完成的事情。我正在从名为names.dat的文件中读取名称,它的名称保存如下:
Collins, Bill\n
Smith, Bart\n
Allen, Jim\n
.
.
.
Holland, Beth
我试图按字母顺序(按升序和降序排序)对这些名称进行排序。更别说现在的降序,我编写了一个程序,应该按升序对这些名称进行排序。但它只是不断吐出我甚至不理解其含义的错误。我不知道错误是来自deque和我试图定义的字符串,还是来自其他部分。这是我到目前为止所得到的。
#include<iostream>
#include<fstream>
#include<iomanip>
#include<deque>
using namespace std;
const int SIZE = 20;
void setAscendingSort(string [], int);
void displayArray(string [], int);
int main()
{
deque<string> NAMES;
ifstream infile;
infile.open("names.dat");
string name;
while(getline(infile, name))
{
NAMES.push_back(name);
}
cout << "The values before the selection sort is performed are:" << endl;
displayArray(NAMES, SIZE);
setAscendingSort(NAMES, SIZE);
cout << "The values after the selection sort is performed are:" << endl;
displayArray(NAMES, SIZE);
return 0;
}
void displayArray(string array[], int elems)
{
for(int count = 0; count < elems; count++)
cout << array[count] << " ";
cout << endl;
}
void setAscendingSort(string array[], int elems)
{
int seek = 0;
int minCount;
int minValue;
for (seek = 0; seek < (elems - 1); seek++)
{
minCount = seek;
minValue = array[seek];
for (int index = seek + 1; index < elems; index++)
{
if (array[index] < minValue)
{
minValue = array[index];
minCount = index;
}
}
array[minCount] = array[seek];
array[seek] = minValue;
}
}
你认为我看不出什么样的错误?我非常喜欢编程,我会很感激任何帮助。提前谢谢!