Серьезной проблемой является проверка, которая у вас есть:
if (number[i] != 0)
Это серьезная проблема, поскольку она выполняется до , когда вы инициализируете что-либо в number[i]
, когда его значение равно неопределенный . А использование неопределенных значений приводит к неопределенному поведению в вашей программе.
Если вы хотите пропустить нули во входных данных, вам нужно прочитать во временную переменную и проверьте, если , что значение равно нулю или нет.
Вам также необходимо отслеживать количество значений, которые вы вводили другим способом, поскольку нули не должны учитываться.
Возможно, что-то вроде этого:
size_t count = 100;
// Loop while we have still have numbers to input
while (count > 0)
{
int temp;
// Read a number from the user
std::cin >> temp;
// If it's not zero, then add it to the array, else just ignore it
if (temp != 0)
{
// 100 - count will result in the index where the number is added to the array
input[100 - count] = temp;
// One less number to read
--count;
}
}
Есть, конечно, лучшие решения, чем показано выше, но, надеюсь, оно должно быть более понятным, а также не использовать ничего, что вы не могли бы учили еще.