
Даю 100 балов.Инфа Дан целочисленный массив из 30 элементов. Элементы массива могут принимать целые
значения от -1000 до 1000 включительно. Опишите алгоритм, позволяющий найти и вывести максимальное значение среди отрицательных элементов массива, не оканчивающихся на 3. Если в исходном массиве нет элемента, значение которого отрицательно и не оканчивается цифрой 3, то вывести сообщение "Не найдено". Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных. const N = 30; var a: array [1..N] of integer; i, j, max: integer; begin for i:= 1 to N do readln(a[i]); ... end.

Ответы на вопрос

Ответ:
- max := -1001;
- for j := 1 to N do
- if (abs(a[j]) mod 10 <> 3) and (a[j]<0) then
- if a[j]>max then max := a[j];
- if max=-1001 then write('Не найдено')
- else write(max);
Объяснение:
- max := -1001;
Присваиваем переменной max, которая должна содержать максимальное значение, минимальное значение -1 ( -1000 -1 = -1001).
- for j := 1 to N do
- if (a[j] mod 10 <> 3) and (a[j]<0) then
- if a[j]>max then max := a[j];
Пробегаемся по элементам массива и смотрим: если остаток модуля элемента от деления на 10 неравен 3 (т.е. не оканчивается цифрой 3) и элемент меньше 0 (т.е. отрицательный), тогда, при условии, что элемент больше текущего максимального значения, переменную max перезаписываем -- присваиваем ей текущий элемент.
- if max=-1001 then write('Не найдено')
- else write(max);
Если переменная max содержит изначальное значение (-1001), то выводим на экран "Не найдено", иначе выводим на экран max.
Пример работы:





Для решения данной задачи мы можем использовать следующий алгоритм:
Инициализируем переменную
max
значением, которое гарантированно не будет встречаться в массиве, например,-1001
.Проходим по массиву
a
и для каждого элементаa[i]
:- Проверяем, является ли
a[i]
отрицательным и не оканчивается на 3. - Если это условие выполняется и
a[i]
больше текущего значенияmax
, то обновляем значениеmax
наa[i]
.
- Проверяем, является ли
По завершении цикла, проверяем значение
max
. Если оно осталось равным-1001
, то выводим "Не найдено". В противном случае выводим значениеmax
.
Вот как это может быть реализовано в вашем коде:
pascalconst N = 30; var a: array [1..N] of integer; i, max: integer; begin for i := 1 to N do readln(a[i]); max := -1001; // Инициализация максимального значения for i := 1 to N do begin if (a[i] < 0) and (a[i] mod 10 <> 3) then // Проверка условий begin if a[i] > max then max := a[i]; // Обновление максимального значения end; end; if max = -1001 then writeln('Не найдено') else writeln('Максимальное отрицательное значение, не оканчивающееся на 3: ', max); end.
Этот код проходит по массиву, проверяет условия для каждого элемента и находит максимальное отрицательное значение, не оканчивающееся на 3.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili