Условие задачи: Найти наибольший элемент и его номер в массиве, элементы которого вводятся с клавиатуры. Размер произвольный. (Язык Pascal)
Сложность: легкая.
Решение задачи
Для начала продумаем наше решение. Сначала заполним массив, потом в цикле через условие будем находить позицию и наибольший элемент.
Что такое позиция элемента? Это его индекс. Например, в массиве есть mass есть 2 элемента:
1
2
|
mass[ 1 ] := 32 ; mass[ 2 ] := 31 ; |
Вот эти цифры 1 и 2 и есть индексы, т.е. позиция элементов.
Для того чтобы решить задачу нам понадобятся следующие переменные:
- Переменная mass — для массива
- Переменная max — для наибольшего элемента массива
- Переменная position — для позиции наибольшего элемента
- Переменная n — для количества элементов массива
- Переменная i — для цикла.
Начнем мы с каркаса нашей программы
1
2
3
4
5
6
7
8
9
10
11
|
type massiv = array [ 1..100 ] of integer ; // создаём свой тип данных var max, position, n, i : integer ; // объявляем mass : massiv; // переменные begin write ( 'Введите длину массива : ' );readln(n); // просим пользователя ввести длину массива readln; // чтобы программа не закрывалась end . |
Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ), объявили переменные, попросили пользователя ввести кол-во элементов массива.
Теперь давайте заполним наш массив:
1
2
3
4
|
for i:= 1 to n do // пускаем цикл для заполнения массива begin write ( 'Введите ' ,i, ' элемент : ' );readln(mass[i]); // просим пользователя заполнить массив end ; |
Для того чтобы найти наибольший элемент массива, делается следующее, для начала задаётся начальное значение наибольшего элемента, это всегда первый элемент ну и позиция первого элемента — один.
1
2
|
max := mass[ 1 ]; // задаём начальный максимальный элемент position := 1 ; // и позицию максимального элемента |
Дальше в цикле мы сравниваем наибольший элемент со всеми остальными и если какое-то больше текущего наибольшего элемента то уже оно становится наибольшим.
Допустим у нас есть массив из трех чисел : 1 4 7.
Начальное значение будет 1, т.е. max = 1, дальше мы сравниваем его со 2-м элементом с четверкой, она больше 1, значит уже она наибольший элемент, т.е. max = 4, и теперь мы переменную max сравниваем в 7, 7 больше 4, и значит max = 7. Вот как то так.
1
2
3
4
5
6
7
8
|
for i:= 2 to n do // цикл для нахождения макс. элемента и его позиции begin if (mass[i] > max) then // если текущее значение больше чем max, то begin max := mass[i]; // max присваиваем это значение position := i; // и заносим позицию этого элемента end ; end ; |
Вроде должно быть всё понятно. Цикл мы начинаем с двух потому что у нас до цикла в переменной max значение первого элемента массива, нету смысла сравнивать 1-е значение с первым, хотя ошибки не будет, можете написать i:=1.
Всё решение задачи Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
type massiv = array [ 1..100 ] of integer ; // создаём свой тип данных var max, position, n, i : integer ; // объявляем mass : massiv; // переменные begin write ( 'Введите длину массива : ' );readln(n); // просим пользователя ввести длину массива for i:= 1 to n do // пускаем цикл для заполнения массива begin write ( 'Введите ' ,i, ' элемент : ' );readln(mass[i]); // просим пользователя заполнить массив end ; max := mass[ 1 ]; // задаём начальный максимальный элемент position := 1 ; // и позицию максимального элемента for i:= 2 to n do // цикл для нахождения макс. элемента и его позиции begin if (mass[i] > max) then // если текущее значение больше чем max, то begin max := mass[i]; // max присваиваем это значение position := i; // и заносим позицию этого элемента end ; end ; writeln ( 'Максимальный элемент : ' , max, ' его позиция ' , position); // выводим результат readln; // чтобы программа не закрывалась end . |