C++ мин. и макс. элемент массива за один проход
нужно массив из 12 чисел заполнить с клавиатуры и за один проход найти максимальный и минимальный элемент в нем. написал код но не понимаю почему не работает. подскажите пожалуйста
#include <iostream>
using namespace std;
int main()
{
int arr[12], min, max;
for (int i = 0; i < 12; i++) {
cin >> arr[i];
}
do {
min = arr[0];
max = arr[0];
} while (0);
for (int k = 1; k < 12; k++) {
if (arr[k] > max) {
max = arr[k];
}
else if (arr[k] < min) {
min = arr[k];
}
cout << "max is: " << max << " " << "min is: " << min;
return 0;
}
}
Ответы (2 шт):
Попробуйте так:
#include <iostream>
using namespace std;
int main()
{
int a, min, max;
cin >> a;
min = max = a;
for (int i = 1; i < 12; i++) {
cin >> a;
if (min > a) min = a;
if (max < a) max = a;
}
cout << "max is: " << max << " " << "min is: " << min;
}
Если ну никак без массива -
#include <iostream>
using namespace std;
int main()
{
int a[12], min, max;
cin >> a[0];
min = max = a[0];
for (int i = 1; i < 12; i++) {
cin >> a[i];
if (min > a[i]) min = a[i];
if (max < a[i]) max = a[i];
}
cout << "max is: " << max << " " << "min is: " << min;
}
Update
Кстати, у вас для исправления ситуации было достаточно заменить
cout << "max is: " << max << " " << "min is: " << min;
return 0;
}
на
}
cout << "max is: " << max << " " << "min is: " << min;
return 0;
Все после этого работает :)
У вас так же не присвоено значение max и min. В некоторых случаях может найти неправильный максимум или минимум. Нужно для максимального элемента устанавливать то значение, которого не может быть. Например для массива из положительных чисел. max должен быть равен -1 к примеру. А min должен быть равен числу которое будет всегда больше любого. Например макс. число массива 1000. min должен быть 1001.