【问题标题】:Error code with sorting program排序程序的错误代码
【发布时间】:2012-02-27 08:47:11
【问题描述】:

我目前正在尝试编写一个按字母顺序排列字符串的程序。我有一个错误。就是 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);
       }
}

【问题讨论】:

  • 这看起来像 Java - 你能用语言标记,并告诉我们minLocation 是什么?您自己编写的方法,还是库的一部分?无论哪种方式,错误都是说您不正确地调用minLocation - 检查函数签名以了解它应该如何正确调用。

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


【解决方案1】:

没有看到minLocation 的定义,我们无法判断。但可以肯定的是,它不需要两个参数 - 编译器不会只是为了好玩而对你撒谎,你通常可以假设他们所说的是真的:-)

你需要找到定义,比如:

int minLocation (int loc) { ...

并弄清楚你是如何实际上调用它的。鉴于它看起来像是在尝试找出两个索引中的哪一个具有较低的值,它可能需要更多而不是两个参数。

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

根据您的编辑,muinFunction 被定义为:

int minLocation (string list[], int first, int last) { ...

显然它还需要字符串数组以及两个索引。您需要将调用更改为:

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

同时留意swap 电话。根据编码风格,它可能有类似的要求。

【讨论】:

  • 我知道,改了,因为 minindex 和 minlocation 在深夜变得模糊
  • @OurFamilyPage,您正在调用函数 minLocation(),它需要 三个 参数和 两个,您错过了传入数组字符串。你修好了吗?
  • @OurFamilyPage,这不是直接的问题,而是您会发现的下一个
猜你喜欢
  • 2019-01-03
  • 1970-01-01
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多