К обработке элементов одномерного массива можно отнести такие типы задач:
1. найти сумму элементов;
2. найти количество элементов;
3. заменить элементы по условию;
4. поиск максимального и минимального значений.
Рассмотрим эти задачи на двух языках программирования
Найти сумму элементов массива (сложить все элементы массива).
Рис. (1). Программа на Pascal | Рис. (2). Программа на Python |
Найти сумму по условию, например сумму чётных элементов (сложить все чётные элементы массива).
|
|
Рис. (3). Программа на Pascal | Рис. (4). Программа на Python |
Найти количество элементов по сложному условию, например кратных (7) и не кратных (5) и (3).
Рис. (5). Программа на Pascal | Рис. (6). Программа на Python |
Заменить все отрицательные элементы на модуль элемента.
Рис. (7). Программа на Pascal | Рис. (8). Программа на Python |
Способов поиска максимального и минимального значений элементов массива существует множество. Остановимся на таком способе:
1. допустим, что максимальное значение равно меньшему из диапазона;
2. сравним его со всеми элементами массива поочерёдно;
3. всегда найдётся значение большее, чем начальное, поэтому запомним его в переменную, которую ввели для поиска максимального значения.
Задача на поиск максимального элемента
Заполнить массив элементами в диапазоне от (-10) до (20). Найти максимальный элемент массива.
Рис. (9). Алгоритм поиска максимального элемента массива
Рис. (10). Поиск максимального элемента на Pascal |
Рис. (11). Поиск максимального элемента на Python |
Аналогично происходит поиск минимального элемента.
Источники:
Рис. 1. Программа на Pascal. © ЯКласс.
Рис. 2. Программа на Python. © ЯКласс.
Рис. 3. Программа на Pascal. © ЯКласс.
Рис. 4. Программа на Python. © ЯКласс.
Рис. 5. Программа на Pascal. © ЯКласс.
Рис. 6. Программа на Python. © ЯКласс.
Рис. 7. Программа на Pascal. © ЯКласс.
Рис. 8. Программа на Python. © ЯКласс.
Рис. 9. Алгоритм поиска максимального элемента массива. © ЯКласс.
Рис. 10. Поиск максимального элемента на Pascal. © ЯКласс.
Рис. 11. Поиск максимального элемента на Python. © ЯКласс.
Добрый день, товарищи!
В этой публикации я расскажу вам, как найти максимальное число из заданной пользователем последовательности. Для этого мы проведем небольшое первое знакомство с массивами ( более детально они будут разобраны в будущих публикациях ).
Напишем нам задачу:
Разработать программу определения максимума из последовательности чисел. Все числа вводятся пользователем.
Хорошо. Значит исходя из задания можем предположить, что сначала нужно организовать ввод этой самой последовательности пользователем.
В конце статьи будет ссылка на скачивание кода с Яндекс.Диска!
1. Типы данных
Давайте подумаем: нам нужна последовательность цифр. Вроде бы логично ввести N переменных, чтобы пользователь просто вводил каждую. Вот.. Только сколько это – N? Вот и первая сложность – простыми переменными нам тут не обойтись.
Если с первыми тремя переменными проблем нет, то теперь у нас новый вариант их объявления – массивы.
Все переменные сделаем Integer для простоты эксперимента. Вы, разумеется, можете изменить тип данных на Real, при необходимости.
Как объявляется массив вы можете видеть выше.
- mass – имя массива, работает так же как имя переменной
- array – объявление переменной массивом
- [1..100] – диапазон массива. В данном массиве не может быть более 100 элементов
- of integer – тип данных массива, так же может быть и of char и of real и т.д.
2. Начало программы
В этом куске кода вводим пару пригласительных сообщений, и предлагаем пользователю ввести, какой длины будет его последовательность.
3. Заносим элементы в массив
Работает это так: просто вводим числа в последовательность по циклу.
От 1 до нашего максимального количества. Кроме того, mass[i] – это значение массива в данный момент. Например i = 3, значит mass[3] – это третий элемент массива. Вообще, есть такой нюанс, что нумерация в массиве начинается с 0, а не с 1, но в рамках этой программы останавливаться на этом не будем. Разберем это в публикации, посвященной массивам.
4. Находим максимум
Сейчас, до этих строк, наше Мах пустое. Для начала возьмем первый элемент введенной последовательности.
После этого объявим цикл (начиная с двух, так как первый элемент нами уже занят), который будет сравнивать каждое следующее число с нашим “максимальным”, и, если число больше – оно будет становится новым максимальным. Все просто!
В конце просто выведем это.
5. Тесты
Вот несколько наборов данных, которые использовались для тестов.
Как видим, максимальный элемент находится без проблем
6. Заключение
Вот мы и разобрали программу, которая находит максимальный элемент последовательности, а если быть точным – одномерного массива.
Весь код программы будет выглядеть так:
Как и говорил, вот ссылка на скачивание этого файла с Яндекс.Диска:
Скачать 21max.pas с Яндекс.Диска
Данный человек всегда открыт для обсуждения контента и общения с подписчиками, если найдутся какие либо вопросы то я обязательно постараюсь ответить на них.
По возможности я попросил бы подписаться и оценить публикацию. Сейчас это критически важно для развития канала. Так то!
Доброго вам всем здоровьица в эти трудные времена!
Перейти к содержанию
Найти наибольший элемент и его порядковый номер в массиве
Просмотров 17.6к. Обновлено 15 октября 2021
Заполнить одномерный массив случайными числами. Найти и вывести на экран наибольший его элемент и порядковый номер этого элемента.
Заполнение массива и поиск наибольшего элемента можно выполнять в одном цикле.
Поскольку необходимо найти не только максимальный элемент, но и его индекс, то лучше искать индекс, так как по нему всегда можно получить значение из массива. Конечно, при поиске можно сохранять и индекс, и элемент в двух разных переменных. Однако этого делать не обязательно. До цикла присвоим переменной, в которой будет храниться индекс максимального элемента, значение 1. Это значит, предполагается, что максимальный элемент находится в первой ячейке массива.
Тело цикла будет состоять из следующих действий:
- Сгенерировать случайное число и записать его в очередную ячейку массива.
- Вывести полученное число на экран.
- Если это число больше, чем то, что хранится под индексом, записанным в переменную-максимум, то присвоить этой переменной текущий индекс (не само число!).
После того, как индекс наибольшего элемента будет найден, вывести его на экран. Чтобы вывести элемент по данному индексу, надо использовать выражение извлечения элемента из массива. Например, если max — это индекс, а arr — массив, то выражение будет таким: arr[max].
Pascal
найти максимальный элемент массива паскаль
const N = 10;
var
arr: array[1..N] of integer;
i, max: byte;
begin
randomize;
max := 1;
for i:=1 to N do begin
arr[i] := random(100);
write(arr[i], ' ');
if arr[max] < arr[i] then
max := i;
end;
writeln;
writeln('arr[',max,'] = ',arr[max]);
end.
64 26 99 37 57 64 6 21 48 19
arr[3] = 99
Язык Си
#include < stdio.h>
#define N 10
main() {
int arr[N], i, mx;
srand(time(NULL));
mx = 0;
for (i=0; i< N; i++) {
arr[i] = rand() % 100;
printf("%d ", arr[i]);
if (arr[i] > arr[mx])
mx = i;
}
printf("narr[%d] = %dn", mx, arr[mx]);
}
75 46 7 39 11 29 34 77 86 25
arr[8] = 86
Python
найти максимальный элемент массива python
from random import random
N = 10
arr = [0] * N
mx = 0
for i in range(N):
arr[i] = random() * 100
print("%.2f" % arr[i], end='; ')
if arr[i] > arr[mx]:
mx = i
print("narr[%d] = %.2f" % (mx, arr[mx]))
73.83; 16.23; 30.18; 27.41; 94.27; 46.27; 66.17; 61.07; 18.89; 61.16;
arr[4] = 94.27
КуМир
алг
нач
цел N = 10
целтаб arr[1:N]
цел mx, i
mx := 1
нц для i от 1 до N
arr[i] := irnd(100)
вывод arr[i], " "
если arr[mx] < arr[i] то
mx := i
все
кц
вывод нс,"arr[",mx,"] = ",arr[mx]
кон
57 78 14 96 76 9 19 36 45 54
arr[4] = 96
Basic-256
decimal 1
N = 10
dim arr(N)
mx = 0
for i=0 to N-1
arr[i] = rand * 100
print arr[i] + "; ";
if arr[i] > arr[mx] then mx = i
next i
print "Номер элемента: " + mx
print "Значение элемента: " + arr[mx]
21.9; 58.4; 24.4; 72.6; 88.5; 65.2; 56.6; 65.1; 72.6; 40.4;
Номер элемента: 4
Значение элемента: 88.5
Напишем программу, которая вычисляем максимальный элемент в массиве.
Нахождение максимального элемента массива.
program massiv5; uses crt; const N=10; type x=array [1..N] of integer; var a:x; i:integer; max:integer; imax:integer; begin clrscr; randomize; for i:=1 to N do begin a[i]:= -50+random(101); write (A[i]:5) end; writeln; imax:=1; max:=A[1]; for i:=2 to N do if max<a[i] then begin max:=a[i]; imax:=i end; writeln (‘Максимальный элемент в массиве=’,max:5); writeln (‘Его индекс=’,imax:5); readln end.
В строке №7 записываем переменную для хранения величины максимального элемента.
В строке №8 записываем переменную для хранения индекса максимального элемента.
В строке №11 мы включаем функцию Randomize. Эта функция позволяет генерировать случайные числа в программе. В данном случае нам необходимо каждому элементу массива [1..N] (всего 10 элементов) присвоить какое-нибудь значение. В программе «massiv3» значения для всех элементов массива мы вводили с клавиатуры. В этой задаче мы ничего вводить не будем. Функция Randomize сама создаст значения для каждого элемента массива. В массиве у нас 10 элементов ([1..N], const N=10), соответственно будет сгенерировано 10 случайных чисел.
В строке №12 включаем цикл. Переменная «I» будет изменяться в цикле от 1 до «N»
В строке №14 очередному элементу массива мы присваиваем случайное число, которое лежит в диапазоне от – 50 до + 50. (Сначала пишется минимальное число – 50, затем знак +, затем слово RANDOM, затем в скобках указывается общее количество возможных чисел в диапазоне; в диапазоне от – 50 до + 50 получается 100 чисел + число 0, всего 101)
Строка №15. Если мы запустим программу на данном этапе, у нас выведется на экран 10 различных чисел со значением от – 50 до + 50.
В строке №18 в переменную для хранения индекса (номера) максимального элемента мы записали число 1, т.е. будем считать, что первый элемент массива – максимальный.
В строке №19 в переменную для хранения величины максимального элемента записываем значение первого элемента массива (например, если первое сгенерированное число будет 13, то его и будем считать максимальным).
В строке №20 задаем цикл. В него мы не включаем 1-ый элемент. А затем, в строке №21 мы проверяем условие. Мы сравниваем все значения элементов массива (т.е. все сгенерированные числа) начиная со 2-го и до 10-го с 1 – ым числом. И если очередное число в массиве больше чем 1-ое число, то в переменную для хранения максимального числа записываем это очередное число (строка №23), а в переменную для хранения индекса максимального числа записываем индекс этого очередного числа. После выполнения цикла в переменной max должно остаться максимальное число, а в переменной «imax» должен остаться номер этого числа.
После запуска программы в верхней строке у нас вывелось 10 сгенерированных чисел.
Во второй строке вывелось максимальное число из всех этих сгенерированных чисел.
В-третей строке вывелся номер по порядку, где стоит это максимальное число.
Если в массиве несколько маскимальных элементов и нужно вывести на экран индексы всех этих элементов, то программа будет выглядет так:
program massiv5; uses crt; const N=10; type x=array [1..N] of integer; var a:x; i:integer; max:integer; imax:integer; begin clrscr; randomize; for i:=1 to N do begin a[i]:= -5+random(3); write (A[i]:5) end; writeln; imax:=1; max:=A[1]; for i:=2 to N do if max<a[i] then begin max:=a[i]; imax:=i; end; writeln('Максимальный элемент в массиве=',max); write('Его индекс '); for i:=1 to N do if max=a[i] then begin write (i,', '); end; readln end.
Предыдущая статья : Randomize и Random в Pascal.
Оглавление : Уроки Паскаль.
Следующая статья : Вычисление суммы положительных элементов массива.