0

Почему работает так?

Этот код выводит индекс ечейки с первым наименьшим значением массива (по крайней мере должен) но при вводе массива и нажатии enter выводит то 0 то 3, почему так? И как сделать чтобы показывал реальный номер ечейки? #include <iostream> using namespace std; int main() { const int q=7; int w[q], imin, i; int min=w[0]; for(i=1;i<q;i++){ cin>>w[q]; if(w[i]<min){ min=w[i]; imin=i;} //cout<<w[q]<<" "; } cout<<imin; return 0; }

16th Jul 2020, 10:41 AM
Михаил Михаил
Михаил Михаил - avatar
3 Respostas
+ 1
Are you looking like this: #include <iostream> using namespace std; int main() { const int q=7; int w[q], imin, i; for(i=1;i<q;i++){ //taking input values, changed w[i] cin>>w[i]; cout<<w[i]<<" "; } int min=w[0]; //set 1st element to min //checking here for min value, and index position.. for(i=0;i<q;i++) if(w[i]<min){ min=w[i]; imin=i;} cout<<"\nindex="<<imin<<" min="<<min; return 0; }
16th Jul 2020, 12:25 PM
Jayakrishna 🇮🇳
0
Can you give example inputs.. and expected output.. min=w[0]; will assign 0 to min. Next in loop, until you have negative values, it won't change.. So 1st take input and assign next min=w[0]; And the mistake is input taking into w[q] single place so remaing all set to zero. Last value only retained in w[q]. It should be w[i]. Можете ли вы привести пример входных данных .. и ожидаемый результат .. мин = ш [0]; назначит от 0 до мин. Следующее в цикле, пока у вас нет отрицательных значений, оно не изменится .. Итак, 1-й взять вход и назначить следующий min = w [0]; И ошибка заключается в том, что ввод занимает единицу w [q], поэтому все значения равны нулю. Последнее значение сохраняется только в w [q]. Это должно быть w [i].
16th Jul 2020, 12:02 PM
Jayakrishna 🇮🇳
0
Спасибо большое) 🤝🏆
16th Jul 2020, 12:34 PM
Михаил Михаил
Михаил Михаил - avatar