Задать вопрос
@KirillGo
Начинающий программист

Как найти наибольшее и наименьшее значение в массиве?

Доброго времени суток! Я бы хотел разъяснить одну вещь.В коде нет ошибки,просто нахожу наибольшее и наименьшее значения массива и суммирую эти значения:
#include<iostream>

using namespace std;

int main()

{
    const int N = 5;
    int Array[N];
    int sum = 0;


    for(int i = 0; i < N; i++)
    {
        cout<<"Your massive ["<<i<<"] = ";
        cin>>Array[i];
    }
    int Max = Array[0],Min = Array[0];
    for(int i = 1; i < N; i++)
    {
        if(Max < Array[i])
            Max = Array[i];
        if(Min > Array[i])
            Min = Array[i];
    }
    cout<<"Max: "<< Max << endl;
    cout<<"Min: "<< Min << endl;

    sum = Max + Min;
    cout<<"Your summa of massive's elements is = "<< sum << endl;
    return 0;
}


Вопрос вот в чем:почему строку,где я объявляю переменные Max и Min я должен писать сразу перед циклом,где я указываю условие,а не перед началом программы,где я объявляю,к примеру, переменную sum ?
  • Вопрос задан
  • 16840 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 2
@alexxandr
you'll see in memory only 0xDEADFACE
Так как тогда массив не будет инициализирован и в Max и Min попадут значения из памяти (не пойми какие)
Ответ написан
Комментировать
@mamkaololosha
Перменные рекомендкется объявлять непосредственно перед местом их использования. Каша в началефенкции не нужнв вообще. Вдруг там
if(params.empty()) return;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Потому, что если запомнить значения элементов массива до того, как их введет пользователь, вместо значений в Max и Min окажется фигня, вы не находите?

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

P. S. Ваш английский - ужасен.
Ответ написан
Olej
@Olej
инженер, программист, преподаватель
int Max = Array[0], Min = Array[0];
for( int &x : Array ) {
   Max = Max < x ? x : Max;
   Min = Min > x ? x : Min;            
}
Ответ написан
Vladusch
@Vladusch
На момент начала работы цикла значения этих двух переменных должны:
1. Либо принадлежать области значений в массиве, т.е. достаточно чтобы значения Min и Max были инициализированы любым элементом массива (можно разными для каждой переменной). В это случае Вы можите объявить либо объявляете эти переменные после того как у Вас инициализирован массив, либо объявляете их ранее (в начале программы), но инициализировать надо позже, когда будут известны значения массива.
2. Или надо инициализировать их так, чтобы значение Min было больше или равно самого большого значения массива, а значение Max меньше или равно самого маленького значения в массиве (я не перепутал Min и Max). В Вашем случае это будет максимальное и минимальное значения для типа int, т.к. у Вас массив значений этого типа. Тогда можно перенести объявление и инициализацию переменных Max и Min в начало программы:
int Max = INT_MIN, Min = INT_MAX;  // необходим заголовок <climits> (limits.h)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Wanted. Москва
До 350 000 ₽
Wanted. Санкт-Петербург
До 120 000 ₽
Wanted. Санкт-Петербург
от 80 000 до 150 000 ₽
04 янв. 2025, в 14:12
2000 руб./за проект
04 янв. 2025, в 14:08
15000 руб./за проект
04 янв. 2025, в 09:54
10000 руб./за проект