#c #arrays #max #min
#c #массивы #макс #минимум
Вопрос:
Напишите программу, которая просит пользователя ввести целое число n. Программа должна предложить пользователю ввести n целых чисел и сохранить их в одномерном массиве. Затем программа должна вывести минимальные и максимальные элементы в массиве.
int main()
{
int n,a,b;
cin>>n;
int ma=0,mi=0;
int num[n];
cin>>num[0];
for(int i=1;i<n;i )
{
cin>>num[i];
a=num[i];
b=num[i-1];
if(a>b)
ma=a;
if(a<b)
mi=a;
}
cout<<mi<<endl;
cout<<ma;
}
При заданных элементах он неправильно отображает минимальные и максимальные значения. В чем моя ошибка?
Комментарии:
1. Вы должны пометить этот запрос соответствующим языком. Это C? C ? …
2. этот код написан на c
3. Значение является максимальным, когда оно больше предыдущего максимума , а не когда оно больше предыдущего значения 🙂
4. В стандартной
<algorithm>
библиотеке естьstd::minmax_element()
функция именно для этой цели.
Ответ №1:
Вы пропустили, что первое значение в вашем алгоритме никогда не будет установлено как минимальное или как максимальное значение. Давайте предположим, что все числа положительные
int main()
{
int n;
cin>>n;
int ma=0,mi=2147483647;
int num[n];
for(int i=0;i<n;i )
{
cin>>num[i];
if(num[i] > ma)
ma = num[i];
if(num[i] < mi)
mi = num[i];
}
cout<<mi<<endl;
cout<<ma;
}
Ответ №2:
Я бы попробовал следующий код:
std ::vector < int > v (n);
std ::copy_n (std ::istream_iterator < int, char > (cin), begin (v), n);
auto const r ((std ::minmax_element) (begin (v), end (v)));
return std ::cout << * r .first << 'n' << * r .second ? EXIT_SUCCESS: EXIT_FAILURE;
Комментарии:
1. Почему
std ::istream_iterator < int, char >
?2. Это итератор, который принимает символьный входной поток и ссылается на последовательные целые числа из него.
3. Хорошо, интересно, я раньше не видел такого использования, спасибо. Кроме того, этот код фактически не компилируется
4. Меня так раздражает ввод этих сущностей / конечных элементов, что у меня есть свои собственные перегрузки для самих контейнеров, поэтому я просто ввел то, что я бы ввел в свой код (за исключением
std
).