@AlexB_49
Студент

Как исправить ошибку в реализации перегруженных функций?

Здравствуйте. У меня задание написать реализацию перегруженных функций на С++:

bool func(int* arr, int length);
bool func(char* str);

Функция func проверяет расположены ли элементы массива по возрастанию.

Вот мой код:
#include <iostream>

using namespace std;

bool func(int* arr, int length)
{
	bool isGreater = true;

	for (int i = 0; i < length - 1; i++)
	{
		if (arr[i] > arr[i + 1]) 
		{ 
			isGreater = false; 
			break;
		}
	}

	return isGreater;
}

bool func(char* str)
{
	register int len = strlen(str);

	bool isGreater = true;

	for (int i = 0; i < len - 1; i++)
	{
		if (str[i] > str[i + 1])
		{
			isGreater = false;
			break;
		}
	}

	return isGreater;
}

int main()
{
	setlocale(LC_ALL, "Russian");

	bool res1, res2;

	static int arr[5] = { 1, 2, 3, 4, 5 };
	char str[] = "ABCDE";

	res1 = func(arr, 5);
	res2 = func(str);

	if (res1 = true)
		cout << "'Элементы первого массива расположены по возрастанию.";
	else
		cout << "Элементы первого массива не расположены по возрастанию.";

	if (res2 = true)
		cout << "\n\nЭлементы второго массива расположены по возрастанию.";
	else
		cout << "\n\nЭлементы второго массива расположены по возрастанию.";

	return 0;
}


У меня проблема, что, даже если я поменяю массив, допустим, static int arr[5] = { 1, 2, 3, 4, 5 }; на static int arr[5] = { 5, 4, 3, 2, 1 };, то выдает результат, что массив возрастает, хотя это не так. Также и со вторым символьным массивом.

Укажите, пожалуйста, на мою ошибку, а то я не понимаю что не так.
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
if (res1 = true)

Тут вы присваиваете переменной res1 значение true и потом смотрите на ее значение в условии.

Это вызвано тем, что оператор присврения возвращает значение переменной. Т.е. (res1 = true) == true. Если это вставить в if, то это то же самое что if(true).

Для сравнения нужно использовать "==".

Но, вообще говоря, if(res1 == true) - очень плохой код. Правильно писать if (res1).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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