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

  • Автор темы Автор темы Fre4et
  • Дата начала Дата начала
F

Fre4et

Написал программу для нахождения максимального и минимального элементов массива:
Код:
#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;

}

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

min=3
max=19

Но если изменить значения элементов массива:
Код:
,,,
int x[]={3,5,14,1,11,8,4,5,20,19};
....

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

min=3
max=3

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

{max=x[0];} 

else

{max=x[i];}}

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

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


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

А возможно ли ещё в этой программе, после нахождения max и min, поменять их местами?
 
Конечно :)
Просто введи еще две переменных, в которых сохраняй значение счетчика цикла - i всякий раз, как присваиваешь значение в min и в max (и инициализировать нулем не забудь). Например назови их min_i и max_i. После выполнения циклов в них будут номера соответствующих элементов массивов. А дальше меняй как угодно (только не затри одно другим).
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab