Задача к ЕГЭ по информатике на тему «максимум/минимум» №4

Дан целочисленный массив из N  = 30  элементов. Элементы массива различны и могут принимать значения от 0 до 15000. Опишите на одном из языков программирования алгоритм, который находит минимальный и максимальный элементы массива и меняет их местами. В качестве результата необходимо вывести измененный массив, каждый элемент выводится с новой строки.

Например, для исходного массива из 6 элементов

4

5

6

7

8

9

программа должна вывести

9

5

6

7

8

4

Исходные данные объявлены так, как показано ниже на примерах для некоторых языков программирования. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. Индексация элементов в массиве начинается с 0.

|--------------------------------|------------------------------------|-------------------------| |Б-ейсик-------------------------|P-ython-----------------------------|Ал-горитм-ическ-ий-язы-к-| |CON   ST N ASIN  T EGER   =  30 |#  допуск ается такж е              |алг                      | |DIM   A(0T ON  − 1 )ASLON    G   |#  испол ьзовать три                |нач                      | |DIM   IASLON   G                |# цело числен ные пер еменн ые i,t,k |  целN  =  30            | |                                |                                    |                         | |     TASLON    G                |a = []                              |  цел табa[0 : N − 1 ]   | |     KASLON    G                |n = 30                              |  целi,t,k               | |F ORI  = 0T ON   − 1            |foriinrange (0,n ) :                |  нц д ляiот0доN  − 1    | |     IN PU T A (I )              |  a.append (int(input ()))           |    вв одa[i]             | |N EXT   I                       |...                                  |  кц                     | |                                |                                    |                         | |...                              |                                    |...                       | -EN--D-----------------------------------------------------------------кон----------------------|

|--------------------------------|------------------------------------| |-П-аскаль-----------------------|C-+-+-------------------------------| |const                           |#include  < iostream  >             | |  N  =  30                      |usingnamespacestd;                  | |                                |                                    | |var                             |constintN  = 30;                    | |  a : array[0..N  − 1]oflongint; |intmain (){                         | |  i,t,k : longint;              |longa[N ];                          | |begin                           |longi,t,k;                          | |                                |                                    | |  f ori := 0toN − 1do           |for(i = 0;i < N ;i + +)cin > > a[i]; | |     readln(a[i]);               |…                                  | |…                              |return0;                            | -end.——————————}————————————| » class=»math-display» width=»auto»></center> </p>
<p class= В качестве ответа Вам необходимо привести фрагмент программы, который должен находиться на месте многоточия. Вы можете записать решение также на другом языке программирования (укажите название и используемую версию языка программирования, например, Free Pascal 2.6). В этом случае Вы должны использовать те же самые исходные данные и переменные, какие были предложены в приведённых фрагментах.

В переменной k  будем хранить текущий максимальный элемент массива, в переменной t  — минимальный. Сделаем предположение, что первый элемент массива и минимальный, и максимальный, поэтому изначально приравняем k  и t  к a[0]  .

В цикле for  от 0 до N  будем перебирать элементы массива и сравнивать их с текущими значениями минимума и максимума. Если элемент меньше текущего минимального значения (a[i] < t  ), то приравняем t  к a[i]  . Если элемет больше текущего максимального значения (a[i] > k  » class=»math» width=»auto»>), то приравняем <img decoding= к a[i]  . После того, как мы выйдем из цикла, в k  будет храниться значение максимального элемента массива, в t  — минимального.

Далее еще раз пройдемся по всем элементам массива в цикле for  от 0 до N  . Если элемент равен минимальному (a[i] == t  ), то приравняем его к максимальному элементу массива (a[i] = k  ). Если элемент равен максимальному (a[i] == k  ), то приравняем его к минимальному элементу массива (a[i] = t  ).

Выведем измененный массив в строку в цикле f or  .

Пример на C  + +  :

k = a[0],t = a[0];

for(i = 0;i < N ;i + + ){

if(a[i] > k)k = a [i];  » class=»math» width=»auto»> </p>
<p class= if(a[i] < t)t = a[i];

}

for(i = 0;i < N ;i + + ){

if(a[i] ==  k)a[i] = t;

if(a[i] ==  t)a [i] = k;

}

for(i = 0;i < N ;i + + )

cout <<  a[i] <<  endl;

Ответ: См.решение
Оцените статью
Я решу все!