Дан массив X , состоящий из n элементов. Найти максимальный элемент массива и номер, под которым он хранится в массиве.
Алгоритм решения задачи следующий. Пусть в переменной с именем Max хранится значение максимального элемента массива, а в переменной с именем Nmax – его номер. Предположим, что нулевой элемент массива является максимальным, и запишем его в переменную Max , а в Nmax — его номер (то есть ноль). Затем все элементы, начиная с первого, сравниваем в цикле с максимальным.
Если текущий элемент массива оказывается больше максимального, то записываем его в переменную Max , а в переменную Nmax – текущее значение индекса i . Процесс определения максимального элемента в массиве приведён в табл. 5.3 и изображён при помощи блок-схемы на рис. 5.8. Соответствующий фрагмент программы имеет вид:
for (Max=X [ 0 ], Nmax= i =0; i cout
Номера элементов | 1 | 2 | 3 | 4 | 5 | |
Исходный массив | 4 | 7 | 3 | 8 | 9 | 2 |
Значение переменной ![]() |
4 | 7 | 7 | 8 | 9 | 9 |
Значение переменной ![]() |
1 | 2 | 2 | 4 | 5 | 5 |
УРОК 9 -10. Максимальный и минимальный элемент массива (10 класс)
Рис. 5.8. Поиск максимального элемента и его номера в массиве
При поиске максимального элемента и его номера, можно найти только номер максимального элемента, а потом по номеру извлечь значение максимального элемента из массива.
Текст программы поиска номера максимального элемента:
#include using namespace std; int main ( ) < float *X; int i,N, nom; cout>N; //Ввод размерности динамического массива X=new float [N ]; //Выделение памяти для хранения динамического массива X. cout>X [ i ]; //В переменной nom будем хранить номер максимального элемента. nom=0; //Предположим, что максимальным элементом является элемент с номером 0. for ( i =1; iX [ nom ] ) nom= i; cout
Найти минимальный элемент массива. Поиск минимального элемента в массиве. C++ для начинающих. ДЗ#8.
Совет. Алгоритм поиска минимального элемента в массиве будет отличаться от приведённого выше лишь тем, что в условном блоке и, соответственно, в конструкции if текста программы знак поменяется с «».
Рассмотрим несколько задач.
Задача 5.3. Найти минимальное простое число в целочисленном массиве x[N].
Эта задача относится к классу задач поиска минимума (максимума) среди элементов, удовлетворяющих условию. Подобные задачи рассматривались в задачах на обработку последовательности чисел. Здесь поступим аналогично. Блок-схема приведена на рис. 5.9.
Необходимо первое простое число объявить минимумом, а все последующие простые элементы массива сравнивать с минимумом. Будем в цикле последовательно проверять, является ли элемент массива простым числом (функция prostoe). Если X[i] является простым числом, то количество простых чисел (k) увеличиваем на 1 (k++), далее, проверяем, если k равен 1 (if (k==1)), то этот элемент объявляем минимальным (min=x[i]; nom=i;), иначе сравниваем его с минимальным (if (x[i] ).
Текст программы:
#include using namespace std; bool prostoe ( int N) < int i; bool pr; if (N<2) pr=false; else for ( pr=true, i =2; i<=N/ 2; i++) if (N%i ==0) < pr=false; break; >return pr; > int main ( int argc, char **argv ) < int i, k, n, nom, min, *x; cout>n; //Ввод количества элементов в массиве. x=new int [ n ]; //Выделяем память для динамического массива x. cout>x [ i ]; //С помощью цикла по переменной i, перебираем все элементы в массиве x, //k — количество простых чисел в массиве. for ( i=k=0; i else //Все последующие простые числа в массиве сравниваем с минимальным простым числом. //Если текущее число меньше min, перезаписываем его в переменную min, //а его номер — в переменную nom. if ( x [ i ] > //Если в массиве были простые числа, выводим значение и номер минимального простого числа. if ( k>0) cout<<» min = «<
Рис. 5.9. Блок-схема решения задачи 5.3
Аналогичным образом можно написать программу любой задачи поиска минимума (максимума) среди элементов, удовлетворяющих какому-либо условию (минимум среди положительных элементов, среди чётных и т.д.).
Задача 5.4. Найти минимальных чисел в вещественном массиве.
Перед решением этой довольно сложной задачи рассмотрим более простую задачу.
Найти два наименьших элемента в массиве. Фактически надо найти номера ( nmin1, nmin2 ) двух наименьших элементов массива. На первом этапе надо найти номер минимального ( nmin1 ) элемента массива. На втором этапе надо искать номер минимального элемента, при условии, что он не равен nmin1 . Вторая часть очень похожа на предыдущую задачу (минимум среди элементов, удовлетворяющих условию, в этом случае условие имеет вид i!=nmin1 ).
Решение задачи с комментариями:
#include using namespace std; int main ( int argc, char **argv ) < int kvo, i, n, nmin1, nmin2; double *X; cout>n; X=new double [ n ]; cout>X [ i ]; //Стандартный алгоритм поиска номера первого минимального элемента (nmin1). for ( nmin1=0, i =1; i //Вывод двух минимальных элементов и их индексов. cout
По образу и подобию этой задачи можно написать задачу поиска трёх минимальных элементов в массиве. Первые два этапа (поиск номеров двух минимальных элементов в массиве) будут полным повторением кода, приведённого выше. На третьем этапе нужен цикл, в котором будем искать номер минимального элемента, при условии, что его номер не равен nmin1 и nmin2.
Авторы настоятельно рекомендуют читателям самостоятельно написать подобную программу. Аналогично можно написать программу поиска четырёх минимальных элементов. Однако при этом усложняется и увеличивается код программы. К тому же, рассмотренный приём не позволит решить задачу в общем случае (найти k минимумов).
Для поиска минимумов в массиве можно поступить следующим образом. Будем формировать массив nmin, в котором будут храниться номера минимальных элементов массива x.
Для его формирования организуем цикл по переменной от 0 до k-1. При каждом вхождении в цикл в массиве nmin элементов будет j-1 элементов,i и мы будем искать
-й минимум (формировать
-й элемент массива).
Алгоритм формирования -го элемента состоит в следующем: необходимо найти номер минимального элемента в массиве x, исключая номера, которые уже хранятся в массиве nmin. Внутри цикла по
Для каждого элемента массива x (цикл по переменной ) проверить содержится ли номер в массиве nmin, если не содержится, то количество (переменная kvo) таких элементов увеличить на 1. Далее, если kvo равно 1, то это первый элемент, который не содержится в массиве nmin, его номер объявляем номером минимального элемента массива (nmin_temp=i;). Если kvo>1, сравниваем текущий элемент x[i] с минимальным (if (x[i]). Блок-схема алгоритма поиска
минимальных элементов массива представлена на рис. 5.102В блок-схеме отсутствует ввод данных и вывод результатов..Далее приведён текст программы с комментариями.
#include using namespace std; int main ( int argc, char **argv ) < int p, j, i, n, *nmin, k, kvo, nmin_temp; bool pr; double *x; cout>n; x=new double [ n ]; cout>x [ i ]; cout>k; nmin=new int [ k ]; for ( j =0; j1, сравниваем текущий элемент x[i] с минимальным. if ( x [ i ] > nmin [ j ]=nmin_temp; //Номер очередного минимального элемента записываем в массив. > for ( j =0; j
Проверку, содержится ли число i в массиве nmin, можно оформить в виде функции, тогда программа может быть записана следующим образом:
увеличить изображение
Рис. 5.10. Блок-схема алгоритма поиска k минимальных элементов в массиве x.
#include using namespace std; //Функция проверяет, содержится ли число i в массиве x из n элементов. //Функция возвращает true, если содержится, и false, если не содержится. bool proverka ( int i, int *x, int n ) < bool pr; int p; pr=false; for ( p=0;pint main ( int argc, char **argv ) < int j, i, n, *nmin, k, kvo, nmin_temp; double *x; cout>n; x=new double [ n ]; cout>x [ i ]; cout>k; nmin=new int [ k ]; for ( j =0; j nmin [ j ]=nmin_temp; > for ( j =0; j
Авторы настоятельно рекомендуют читателю разобрать все версии решения задачи 5.4.
Задача 5.5. Поменять местами максимальный и минимальный элементы в массиве X.
Алгоритм решения задачи можно разбить на следующие этапы.
- Ввод массива. Поиск номеров максимального (nmax) и минимального (nmin) элементов массива. Обмен элементов местами. Не получится записать «в лоб» (X[nmax]=X [nmin]; X[nmin]=X[nmax];). При таком присваивании мы сразу же теряем максимальный элемент.
- Поэтому нам понадобится временная (буферная) переменная temp. Обмен элементов местами должен быть таким: temp=X[nmax]; X[nmax]=X[nmin]; X[nmin]=temp;
Далее приведён текст программы с комментариями.
<
div xmlns_edi=»http://www.intuit.ru/2010/edi» >#include using namespace std; int main ( int argc, char **argv ) < int i,N, nmax, nmin; float temp; cout>N; float X [N ]; cout>X [ i ]; //Поиск номеров максимального и минимального элементов массива. for (nmax=nmin=0, i =1; iX [ nmax ] ) nmax= i; > //Обмен максимального и минимального элементов местами. temp=X [ nmax ]; X [ nmax]=X [ nmin ]; X [ nmin ]=temp; cout<<«Преобразованный массив Хn «; //Вывод преобразованного массива. for ( i =0; i
Задача 5.6. Найти среднее геометрическое среди простых чисел, расположенных между максимальным и минимальным элементами массива.
Среднее геометрическое элементов
можно вычислить по формуле
— произведение
элементов. При решении этой задачи необходимо найти произведение и количество простых чисел, расположенных между максимальным и минимальным элементами.
Алгоритм решения задачи состоит из следующих этапов:
- Ввод массива.
- Поиск номеров максимального ( nmax ) и минимального ( nmin ) элементов массива.
- В цикле перебираем все элементы массива, расположенные между максимальным и минимальным элементами. Если текущий элемент является простым числом, то необходимо увеличить количество простых чисел на 1, и умножить
на значение элемента массива.
- Вычислить
.
При решении этой задачи следует учитывать, что неизвестно, какой элемент расположен раньше — максимальный или минимальный.
Текст программы с комментариями приведён ниже.
#include #include using namespace std; bool prostoe ( int N) < int i; bool pr; if (N<2) pr=false; else for ( pr=true, i =2; i<=N/ 2; i++) if (N%i ==0) < pr=false; break; >return pr; > int main ( int argc, char **argv ) < int i, k, n, nmax, nmin, p, *x; cout>n; //Ввод количества элементов в массиве. x=new int [ n ]; //Выделяем память для динамического массива x. cout>x [ i ]; //Поиск номеров максимального и минимального элементов в массиве. for (nmax=nmin= i =0; ix [ nmax ] ) nmax= i; > if ( nmin > else for ( p=1,k=0, i=nmax+1; i //Если в массиве были простые числа, выводим среднее геометрическое этих чисел на экран if ( k>0) cout<<» SG «<
Источник: intuit.ru
Разработчику о работе с 1С:Предприятие, Pascal, Паскаль
Найти минимальный элемент одномерного массива, паскаль.
13.06.2017 |
Автор Дмитрий
Найти минимальный элемент одномерного массива, паскаль.
Одномерный массив — упорядоченный набор значений одного типа, с которым работают как с одним объектом. Получить значение элемента массива или записать новое значение в элемент можно по его номеру. Индекс элемента одномерного массива — это его номер в массиве. Найти минимальный элемент одномерного массива — задача определить минимальное значение в этом одномерном массиве.
program Task_Min2; var i, i_Min: integer; i_ArrNum: array[1..10] of integer; begin WriteLn(‘Задача, минимальный элемент одномерного массива:’); WriteLn(‘Введите 10 (десять) чисел:’); for i := 1 to 10 do ReadLn(i_ArrNum[i]); i_Min := i_ArrNum[1]; i := 1; repeat if i_Min > i_ArrNum[i] then i_Min := i_ArrNum[i]; i := i + 1; until i > 10; WriteLn(‘Минимальный элемент одномерного массива = ‘, i_Min); //завершение работы программы WriteLn(‘Нажмите , чтобы выйти.’); ReadLn(); end.
Найти минимальный элемент одномерного массива, паскаль.
Рубрика: Pascal (Паскаль) — задачи и решения
Источник: info1c.com
Статья Нахождение минимального элемента массива
Для нахождения минимального элемента массива мы будем использовать метод Min, как один из наиболее распространённых способов для решения данной задачи.
Одномерный массив
В первом примере рассмотрим, как получить минимальное значение в одномерном массиве.
int [] numbers = ; int minValue = numbers.Min(); //Результат: 1
Многомерный массив
Многомерный массив, в отличие от одномерного массива, не позволяет нам напрямую обратиться к методу Min. Но, это можно легко исправить, если воспользоваться методом Cast, с помощью которого можно преобразовать многомерный массив в обобщенную коллекцию типа IEnumerable. После чего нам станет доступен метод Min, и мы сможем найти минимальное значение массива, например:
int [,] numbers = ,>; IEnumerable colNumbs = numbers.Cast(); int minValue = colNumbs.Min(); //Результат: 2
Данный код можно немного сократить:
int minValue = numbers.Cast().Min();
Jagged массив
Чтобы найти минимальное значение в Jagged массиве, нужно также как и в предыдущем примере, преобразовать содержимое массива в объект типа IEnumerable , но только выполнить эту операцию нужно не с помощью метода Cast, а например, с помощью метода SelectMany :
int [][] numbers = < new int [] , new int [] , new int [] >; int minValue = numbers.SelectMany(x => x).Min(); //Результат: 3
- Добавление файлов в архив rar
- Как установить MySQL for Visual Studio?
- Поиск html элемента с атрибутом id
The Codeby
Well-known member
The Codeby
Well-known member
30.12.2015 4 639 6 688
Комментарии, перенесенные из блога:
COGE
19.10.2016 в 12:33
int [] numbers = ; int minValue = numbers.Min();
А как узнать индекс этого элемента?
ADMIN
20.10.2016 в 12:58
int indexMin = Array.IndexOf(numbers, minValue);
ADMIN
21.10.2016 в 13:36
Как найти индекс максимального или минимального элемента массива? C#
В этой статье хочу показать несколько простых решений, с помощью которых можно найти индекс максимального или минимального элемента массива.
FRANNY
17.11.2016 в 15:42
А если минимальных элементов несколько? Как вывести их количество?
УЛИТА
02.01.2017 в 14:42
При помощи случайных чисел ввести одномерный массив, состоящий из 15 элементов. Найти в нем максимальный и минимальный элементы и поменять местами первый и минимальный элемент, последний и максимальный. На экран вывести исходный и преобразованный массивы в две строки и индексы минимального и максимального элементов. Отсортировать измененный массив методом выбора. Вывести отсортированный массив на экран.
Источник: codeby.net