Сравнение элементов массива

Тема в разделе "Общие вопросы по С и С++", создана пользователем Fre4et, 15 дек 2008.

  1. Fre4et

    Fre4et Гость

    Написал программу для нахождения максимального и минимального элементов массива:
    Код (Text):
    #include <iostream>
    using namespace std;
    int main()

    {

    int x[]={3,5,14,6,11,8,4,5,17,19};

    int min=x[0];

    int max=x[0];

    int i;

    for(i=1;i<10;i++)

    {if(min<x[i])

    {min=x[0];}

    else

    {min=x[i];}}

    for(i=1;i<10;i++)

    {if(max>x[i])

    {max=x[0];}

    else

    {max=x[i];}}
    cout << "\nmin=" << min;
    cout << "\nmax="<< max;

    }
    Работает она правильно:
    Код (Text):
    fre4et@Radio-RK86:~$ g++ mass.cpp -o mass
    fre4et@Radio-RK86:~$ ./mass

    min=3
    max=19
    Но если изменить значения элементов массива:
    Код (Text):
    ,,,
    int x[]={3,5,14,1,11,8,4,5,20,19};
    ....
    то работает она не правильно:
    Код (Text):
    fre4et@Radio-RK86:~$ g++ mass.cpp -o mass
    fre4et@Radio-RK86:~$ ./mass

    min=3
    max=3
    В чём причина?
     
  2. Aleksey

    Aleksey Гость

    Потому, что неправильно написан алгоритм!
    Ветка поиска максимума:
    Код (Text):
    {if(max>x[i])

    {max=x[0];}

    else

    {max=x[i];}}
    Допустим на каком-то шаге мы записываем в max число, которое больше x[0], а на следующем шаге оказывается, что max>x. Что будет? :)
    Правильно, независимо от значения max, ему снова прикажут быть x[0]... а если x[0] не максимальное значение?
    Совсем не так должно быть, значение max присваивать только тогда, когда надо, а не каждый раз (так же и с поиском минимума):

    Код (Text):
    for(i=1;i<10;i++)
    if(max<x[i]) max=x[i];

    типа такого ...
     
  3. Fre4et

    Fre4et Гость

    Спасибо, теперь понял как это делать.

    А возможно ли ещё в этой программе, после нахождения max и min, поменять их местами?
     
  4. Aleksey

    Aleksey Гость

    Конечно :)
    Просто введи еще две переменных, в которых сохраняй значение счетчика цикла - i всякий раз, как присваиваешь значение в min и в max (и инициализировать нулем не забудь). Например назови их min_i и max_i. После выполнения циклов в них будут номера соответствующих элементов массивов. А дальше меняй как угодно (только не затри одно другим).
     
Загрузка...
Похожие Темы - Сравнение элементов массива
  1. Erlan
    Ответов:
    8
    Просмотров:
    1.641
  2. k85
    Ответов:
    2
    Просмотров:
    1.152
  3. clas
    Ответов:
    3
    Просмотров:
    1.607
  4. juk-777
    Ответов:
    29
    Просмотров:
    4.706
  5. aank10
    Ответов:
    3
    Просмотров:
    1.973

Поделиться этой страницей