При нахождении номера минимального элемента в последовательности присваивается значение последнего элемента (0)

Нужно найти номер минимального элемента и чтобы цикл закончился при вводе 0 ,проблема заключается что номер элемента присваивается самый последний ,побывал разные циклы не могу понять в чем дело.Помогите пожалуйста

1 Вариант:

int min = 0;
int number = 0;
int NumberElement=0;
cout << "To stop typing items, enter '0'" << endl;

for (;;) {
    NumberElement++;
    cout << "Enter element: ";
    cin >> number;

    if (number < min) min = NumberElement;
    if (number == 0)break;
}
cout << "Minimum element number=" << min << endl;

2.Вариант

    while (Check==TRUE) {
    NumberElement++;
    cout << "Enter element: ";
    cin >> number;

    if (number < min) min = NumberElement;
    if (number == 0)Check = FALSE;
}

Ответы (2 шт):

Автор решения: Zhihar

во первых выход надо проверять раньше минимальных элементов, иначе ваш 0 будет использован в анализе, а он должен быть исключен

для решения задачи вам нужны

  1. минимальное значение числа
  2. индекс минимально значения числа

тогда все будет работать

int index = -1;

int min_index = -1;
int min = 0;

while (true) {
    cout << "Enter element: ";
    cin >> number;

    if (number == 0)
        break;

    if ((number < min) || (index == -1)) {
        min = number;
        min_index = index
    }

    index ++;
}
→ Ссылка
Автор решения: Harry

Попробуйте так:

int min = INT_MAX, minNumber = -1;

и сначала проверять ввод на 0:

if (number == 0) break;
if (number < min) {
    min = number; 
    minNumber = NumberElement;
}

Так вы будете запоминать значение введенного числа, а не его номера, а значение номера минимального числа - отдельно. Помнить-то надо и то, и другое...

→ Ссылка