При нахождении номера минимального элемента в последовательности присваивается значение последнего элемента (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 будет использован в анализе, а он должен быть исключен
для решения задачи вам нужны
- минимальное значение числа
- индекс минимально значения числа
тогда все будет работать
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;
}
Так вы будете запоминать значение введенного числа, а не его номера, а значение номера минимального числа - отдельно. Помнить-то надо и то, и другое...