Я создаю простую программу быстрой сортировки, которая инициализирует пустой массив и запрашивает у пользователей входные данные, чтобы определить, сколько элементов будет отсортировано и какие элементы будут отсортированы.
Проблема, с которой я сталкиваюсь, заключается в том, что локальная переменная изменяется, несмотря на то, что на нее ссылаются только один раз. Ниже приведен код.
int main()
{
int amount;
int numbersarray[] = {};
std::cout << "How many numbers do you want to sort? " << std::endl;
std::cin >> amount;
for(int i = 0; i <= amount; i++){
std::cout << "Enter number to be sorted: " << std::endl;
std::cin >> numbersarray[i];
}
std::cout <<"Amount to be sorted: " << amount << std::endl;
for(int i = 0; i <= amount; i++){
std::cout << numbersarray[i] << std::endl;
}
}
То, что я ожидаю, произойдет, когда я введу сумму как 5, я смогу ввести 5 элементов в массив, но вместо этого напечатанное количество равно 2, а максимальное количество элементов, которое я могу поместить в массив, равно 3.
Ниже приведен результат выполнения.
How many numbers do you want to sort?
5
Enter number to be sorted:
5
Enter number to be sorted:
2
Enter number to be sorted:
5
Amount to be sorted: 2
5
2
5
Я пытался возиться с оператором for, но я не думаю, что я делаю это правильно, поскольку это не устранило проблему. Манипулирование оператором for, которое я делаю, меняет условие (т.е. ! =, <, <=) </p>