排序程序的错误代码

时间:2012-02-27 08:47:11

标签: c++ string visual-c++ sorting

我目前正在尝试编写一个按字母顺序排列字符串的程序。我有一个错误。这就是minLocation不带2个参数。我是一个相当新的编程可以任何人给我一个提示,为什么我的代码的这部分是错的?

int minLocation(string list[], int first, int last)
{
  int mIndex=first;
  int loc = 0;

    for (loc = first+1; loc <= last; loc++)
        if (list[loc] < list [mIndex])
            mIndex = loc;
    return mIndex;

void Sort(string slist[],int length)
{
   int mIndex;

       for (int loc = 0; loc < length-1; loc++)
       {
           mIndex = minLocation (loc,length-1);
           swap (loc, minIndex);
       }
}

1 个答案:

答案 0 :(得分:1)

没有看到minLocation的定义,我们无法分辨。但可以肯定的是,它不需要两个参数 - 编译器不会因为它的乐趣而欺骗你,你通常会认为他们所说的是真的: - )

您需要找到定义,例如:

int minLocation (int loc) { ...

并弄清楚你实际打算如何调用它。鉴于它看起来它试图找到两个索引中的哪个具有较低的值,它可能需要 more 而不是两个参数。

最重要的是,您需要决定是否需要名为mIndexminIndex的变量。大多数编译器都不够聪明,无法为您解决这个问题。

根据您muinFunction定义为:

的编辑
int minLocation (string list[], int first, int last) { ...
很明显,它还需要字符串数组以及两个索引。您需要将呼叫更改为:

mIndex = minLocation (slist, loc, length-1);

同时关注swap电话。根据编码风格,可能具有类似的要求。