Моя цель - принять 3 числа, а затем отсортировать их от меньшего к большему, кажется, у меня все в порядке и все готово, но мой оператор печати просто печатает одно и то же дважды, потому что я неправильно пишу void? вот как это выглядит, если вам нужно больше кода, дайте мне знать:

int output1 = First;
int output2 = Second;
int output3 = Third;
void sort3(int output1,int output2,int output3); // Send to the sorting void.

Пустота:

void sort3(int &output1, int &output2, int &output3){
    void sort2(int output1, int output2);
    if (output1 > output3) {
        Swap(output1, output3);
    }
    if (output2 > output3) {
        Swap(output2, output3);
    }
    cout << output1 << "" << output2 << "" << output3 << "voided statement" << endl;
    return;
}

void sort2(int output1, int output2){
    if (output1 > output2)
        Swap(output1, output2);
    return;
}

void Swap(int &x, int &y) {
    int temp = x;
    x = y;
    y = temp;
    return;
}

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

-3
Dave 19 Фев 2016 в 17:01

2 ответа

Лучший ответ

Хорошо, я вижу проблему. Здесь вы не вызываете функцию:

void sort3(int output1,int output2,int output3); // Send to the sorting void.

Это объявляет функцию sort3. Фактически он не использует эту функцию. Чтобы использовать его, вам нужно вызвать его, например:

sort3(output1, output2, output3);

Точно так же внутри sort3 вам нужно вызвать sort2, а не просто объявить его:

sort2(output1, output2);

Вам также необходимо изменить sort2, чтобы он принимал ссылочные параметры, иначе он просто сортирует свои локальные переменные, а не те, которые вы ему передаете. Вы получили это право на sort3, но не на sort2.

3
Jonathan Wakely 19 Фев 2016 в 14:15

1) Вам необходимо изменить метод sort2, чтобы он принимал значения по ссылке, чтобы он работал, т.е. вам нужно будет изменить

void sort2(int output1, int output2) 

К

void sort2(int &output1, int &output2)

2) Вы должны удалить как тип возвращаемого значения (т. Е. void), так и квалификаторы типа переменной (т. Е. int), когда вы пытаетесь вызвать функции - в противном случае вы объявляете их, а не вызываете.

0
Kathi 19 Фев 2016 в 14:17