Код ошибки с программой сортировки - PullRequest
0 голосов
/ 27 февраля 2012

В настоящее время я пытаюсь написать программу, которая алфавитирует строки.У меня есть одна ошибка.Дело в том, что 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 Ответ

1 голос
/ 27 февраля 2012

Не видя определения minLocation, мы не можем сказать. Но можно с уверенностью сказать, что он не принимает двух аргументов - компиляторы не лгут вам просто ради удовольствия, вы обычно можете предположить, что то, что они говорят, правда: -)

Вам нужно найти определение, что-то вроде:

int minLocation (int loc) { ...

и выясните, как вы на самом деле хотели это назвать. Учитывая, что, похоже, он пытается найти, какой из двух индексов имеет меньшее значение, возможно, ему нужно больше , чем два аргумента.

И, кроме того, вам нужно решить, хотите ли вы, чтобы эта переменная называлась mIndex или minIndex. Большинство компиляторов недостаточно умны, чтобы понять это за вас.

Исходя из ваших правок, muinFunction определяется как:

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

Кажется очевидным, что ему также нужен массив строк и два индекса. Вам нужно будет изменить вызов на:

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

И следите за вызовом swap. может иметь аналогичное требование, основанное на стиле кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...