Внутри вашего swapIntegers()
вы меняете сами указатели, а не значения переменных, на которые они указывают.Переменные вызывающей стороны не обновляются.
swapIntegers()
должно выглядеть так:
void swapIntegers(int *first, int *second)
{
int saved = *first;
*first = *second;
*second = saved;
}
Кроме того, ваш main()
равен глючит .Он динамически распределяет 2 int
переменных, которые он пропускает, и никогда не назначает входные значения пользователя.Окончательный вывод "After swapping"
выводит значения из этих указателей, а не из переменных, которые фактически были заменены.Код НЕ будет отображать ожидаемый результат.Таким образом, несмотря на то, что сказано в инструкции, main()
НУЖНО изменить, чтобы работать должным образом, и если у вашего профессора есть проблемы с этим, жестко.Он допустил ошибку в коде, который дал вам.
main()
должен выглядеть примерно так:
int main()
{
int first = 0;
int second = 0;
cout << "Enter the first integer: ";
cin >> first;
cout << "Enter the second integer: ";
cin >> second;
cout << "\nYou entered:\n";
cout << "first: " << first << "\n";
cout << "second: " << second << "\n";
swapIntegers(&first, &second);
cout << "\nAfter swapping:\n";
cout << "first: " << first << "\n";
cout << "second: " << second << "\n";
cout << "\nPress any key to quit.";
_getch();
return 0;
}
Или вот так:
// Do not modify the main function!
int main()
{
int first = 0;
int second = 0;
int *pFirst = &first;
int *pSecond = &second;
cout << "Enter the first integer: ";
cin >> first;
cout << "Enter the second integer: ";
cin >> second;
cout << "\nYou entered:\n";
cout << "first: " << first << "\n";
cout << "second: " << second << "\n";
swapIntegers(&first, &second);
cout << "\nAfter swapping:\n";
cout << "first: " << *pFirst << "\n";
cout << "second: " << *pSecond << "\n";
cout << "\nPress any key to quit.";
_getch();
return 0;
}
Иливот так:
int main()
{
int *pFirst = new int (0);
int *pSecond = new int (0);
cout << "Enter the first integer: ";
cin >> *pFirst;
cout << "Enter the second integer: ";
cin >> *pSecond;
cout << "\nYou entered:\n";
cout << "first: " << *pFirst << "\n";
cout << "second: " << *pSecond << "\n";
swapIntegers(pFirst, pSecond);
cout << "\nAfter swapping:\n";
cout << "first: " << *pFirst << "\n";
cout << "second: " << *pSecond << "\n";
delete pFirst;
delete pSecond;
cout << "\nPress any key to quit.";
_getch();
return 0;
}
ОБНОВЛЕНИЕ : о, подождите, это не ошибка вашего профессора, это ваша ошибка.main()
, который вы представили здесь, НЕ соответствует main()
, указанному в фактическом назначении! .Вот как выглядит оригинал main()
:
// Do not modify the main function!
int main()
{
int first = 0;
int second = 0;
cout << "Enter the first integer: ";
cin >> first;
cout << "Enter the second integer: ";
cin >> second;
cout << "\nYou entered:\n";
cout << "first: " << first << "\n";
cout << "second: " << second << "\n";
SwapIntegers(&first, &second);
cout << "\nAfter swapping:\n";
cout << "first: " << first << "\n";
cout << "second: " << second << "\n";
cout << "\nPress any key to quit.";
_getch();
return 0;
}
Этот код правильный.Таким образом, именно вы ввели неправильное использование указателей в main()
.Так что просто вернитесь к исходному main()
коду, который вам дали.А затем выполните swapIntegers()
правильно.Как сказано в инструкциях.