使用选择排序按字母顺序排序名称。

时间:2014-04-07 03:35:28

标签: c++ sorting

好的,所以我之前发布了相同的问题并获得了数组/矢量等方面的帮助。我修复了人们告诉我的一切,但现在我遇到的问题是我的程序只给了我一堆错误。而这一次,我真的不知道出了什么问题。这对我来说非常有意义,但它显然不适合电脑而且我只是一个新手。

所以这就是我想要完成的事情。我正在从名为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;
    }
}

你认为我看不出什么样的错误?我非常喜欢编程,我会很感激任何帮助。提前谢谢!

0 个答案:

没有答案