Задачи по Pascal. Найти наименьший нечетный элемент массива.

Задачи по Pascal

Условие задачи: Массив задан датчиком случайных чисел на интервале [-37, 66]. Найти наименьший нечетный элемент. Размер произвольный. (Язык Pascal)

Сложность: легкая.

Решение задачи

Для начала продумаем наше решение. Ну само собой сначала заполним массив случайными числами с помощью цикла, затем с помощью другого цикла найдем наименьший нечетный элемент.

Для того чтобы решить задачу нам понадобятся следующие переменные:

  1. Переменная mass — для массива
  2. Переменная i — для цикла for
  3. Переменная min — для минимального нечетного элемента
  4. Переменная 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.

cyber
Оцените автора
CyberLesson | Быстро освоить программирование Pascal и C++. Решение задач Pascal и C++
Добавить комментарий