Разбор и решение заданий C2

Программирование. Циклы. Массивы. Условия, ЕГЭ-2014
Администратор
Владимир
Сообщений: 36
Челябинск
3 часа назад
Задание:
Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 10000 включительно. Опишите на естественном языке или на одном из языков программирования алгоритм, позволяющий найти и вывести максимальное значение среди трёхзначных элементов массива, не делящихся на 9. Если в исходном массиве нет элемента, значение которого является трёхзначным числом и при этом не кратно 9, то выведите сообщение «Не найдено».
Исходные данные объявлены так, как показано ниже на примере языка PASCAL. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать некоторые из описанных переменных.

Код PASCAL:
  1. const
  2. N = 20;
  3. var
  4. a: array [1..N] of integer;
  5. i, j, max: integer;
  6. begin
  7. for i := 1 to N do
  8. readln(a[i]);
  9. ...
  10.  
  11. end.

Решение задания:
Итак, нам требуется дописать код программы.
По условию у нас должна получиться программа, которая выводит максимальное трехзначное число, не кратное девяти, либо выводит сообщение, что такого числа нет.
Соответственно, нам потребуется переменная max.
Для решения задания мы будем использовать арифметический цикл. Так как первый цикл FOR уже завершен, мы можем снова взять переменную i в качестве счетчика.
Для проверки условия по кратности мы должны использовать функцию mod для нахождения остатка. Если остаток при делении на 9 не равен нулю, то число не кратно девяти.
Поиск трехзначного числа - оно больше 99 и меньше 1000.
Поиск максимального числа - использование переменной max, которую изначально приравняем к нулю. Если элемент массива будет трехзначным, кратным девяти и больше переменной max, то ей будет присвоено значение этого элемента.
Если после выполнения цикла переменная max будет равна нулю, то программа выведет "Не найдено", иначе будет выведено значение переменной max.

Запишем код по указанному выше алгоритму:

Код PASCAL:
  1. max := 0;
  2. // поиск чисел, соответствующих условию
  3. for i := 1 to N do
  4. if (a[i] > 99) and (a[i] < 1000) and (a[i] mod 9 <> 0) and (a[i] > max) then
  5. max := a[i];
  6. //вывод максимального значения
  7. if max = 0 then
  8. writeln('Не найдено')
  9. else
  10. writeln(max);
Редактировалось: 2 раза (Последний: 8 октября 2013 в 00:07)
Информатика и ИКТ
|
Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.