@dvedoski

Как обработать аргументы при вызове функции?

Приветствую. Начала изучать C++. Читаю Страуструпа. Заголовочный файл, что прикладывался к книге - не работает. Так что некоторые вопросы приходиться гуглить. К примеру с функцией sort() всё решила сама, с русскими буквами в консоли тоже.
Сейчас возникла проблема решение которой найти ну никак не получается. HELP PLZ!
Пытаюсь обработать входные параметры в функции square(). Если значение отрицательное то должно быть просто некорректный ввод. С положительными всё норм. Если 2 и 5 - возвращает 10. С отрицательными типа работает, но в конце плюсом возвращается значение которое непонятно откуда появляется. Вот код.
int square(int x, int y) {
	if (x <= 0 || y <= 0) {
		cout << "некорректный ввод \n";
	}
	else
	{
		return  x * y; 
	}
}
int main(void)
{
	cout << square(-2, 5);




вывод такой:

некорректный ввод
254589920

------------------------------------------
Откуда берется цифра 254589920 ?оО Скрин есть.
  • Вопрос задан
  • 52 просмотра
Решения вопроса 1
profesor08
@profesor08
Вместо cout должен быть return, который будет что-то возвращать, например -1. При вызове функции проверяй, если результат -1, то выводи сообщение об ошибке, если 0 либо больше, то все хорошо. Я бы сделал так либо вообще бросил бы исключение, либо перемножал бы даже отрицательные, возвращая значение по модулю.

int square(int x, int y) {
  if (x < 0 || y < 0) {
    return -1;
  }
  else
  {
    return  x * y; 
  }
}

int main(void)
{
  int result = square(-2, 5);

  if (result == -1) {
    cout << "некорректный ввод \n";
  }
  else {
    count << result;
  }

}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
В первой ветке if у вас функция ничего не возвращает. Возможно, причина в этом. Возвращать можно любое неверное значение для теста, допустим, -1.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы