Условие задачи: Массив задан датчиком случайных чисел на интервале [-37, 66]. Найти наименьший нечетный элемент. Размер произвольный. (Язык Pascal)
Сложность: легкая.
Решение задачи
Для начала продумаем наше решение. Ну само собой сначала заполним массив случайными числами с помощью цикла, затем с помощью другого цикла найдем наименьший нечетный элемент.
Для того чтобы решить задачу нам понадобятся следующие переменные:
- Переменная mass — для массива
- Переменная i — для цикла for
- Переменная min — для минимального нечетного элемента
- Переменная count — для кол-ва элементов массива
Начнем мы с каркаса нашей программы
1
2
3
4
5
6
7
8
9
10
11
12
|
type massiv = array [ 1..100 ] of integer ; // создаём свой тип данных для массива var mass : massiv; // объявляем i, min, count : integer ; // переменные begin randomize; // включаем генератор случайных чисел write ( 'Введите размер массива : ' );readln(count); // вводим размер массива end . |
Тут мы создали свой тип данных для массива, как и зачем читайте ( тут ) включили генератор случайных чисел , подробнее (тут), ну и попросили пользователя ввести кол-во элементов массива.
Теперь давайте заполним наш массив случайными числами с помощью цикла for и выведем все его элементы, цикл должно у нас быть от 1 до количества элементов, чтобы заполнить весь массив, пишем:
1
2
3
4
5
|
for i:= 1 to count do // пускаем цикл для заполнения массива begin mass[i] := random( 104 ) - 37 ; // присваиваем случайное число write (mass[i], ' | ' ); // выводим число end ; |
Для того чтобы найти минимальный элемент делается следующее, для начала задаётся начальное значение переменной min, обычно это первое значение массива, дальше оно уже сравнивается со всеми остальными элементами массива и если какое-то меньше min, то уже оно становится минимальным, но также надо не забыть проверить на нечетность.
1
2
3
4
5
|
min := mass[ 1 ]; // за минимальный элемент берем 1-е число, чтобы было с чем сравнивать for i:= 2 to count do // ищем минимальный элемент if (mass[i] < min) AND (mass[i] mod 2 <> 0 ) then // проверяем его на условие, если прошло условие min := mass[i]; // присваиваем новое значение |
i = 2 , потому что первый элемент у нас уже известен min := mass[1] смысла сравнивать первый элемент с первым нету.
После этого цикла у нас должен быть найден наименьший нечетный элемент, но может быть такая ситуация что начальное значение переменной min и есть наименьший элемент, т.е. все остальные элементы больше начального значения, в этом случаи нам надо проверить и его на нечетность:
1
2
3
4
|
if ( min mod 2 <> 0 ) then // если вдруг минимальным остался самый первый элемент, то надо его тоже проверить на четность writeln ( 'Минимальный элемент равен : ' , min) else writeln ( 'В массиве нет нечетных элементов!' ); |
Т.е. если последнее число которое содержится в переменной min нечетное то мы его и выводим, иначе говорим что в массиве нет нечетных элементов.
Всё решение задачи 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
29
30
31
32
|
type massiv = array [ 1..100 ] of integer ; // создаём свой тип данных для массива var mass : massiv; // объявляем i, min, count : integer ; // переменные begin randomize; // включаем генератор случайных чисел write ( 'Введите размер массива : ' );readln(count); // вводим размер массива for i:= 1 to count do // пускаем цикл для заполнения массива begin mass[i] := random( 104 ) - 37 ; // присваиваем случаное число write (mass[i], ' | ' ); // выводим число end ; min := mass[ 1 ]; // за минимальный элемент берем 1-е число, чтобы было с чем сравнивать for i:= 2 to count do // ищем минимальный элемент if (mass[i] < min) AND (mass[i] mod 2 <> 0 ) then // проверяем его на условие, если прошло условие min := mass[i]; // присваиваем новое значение writeln ; // для красоты переносим строку if ( min mod 2 <> 0 ) then // если вдруг минимальным остался самый первый элемент, то надо его тоже проверить на четность writeln ( 'Минимальный элемент равен : ' , min) else writeln ( 'В массиве нет нечетных элементов!' ); readln; // чтобы программа не закрывалась end . |