Категория C2 • задача №3

 
 
 

Условие задачи

Дано:
дан вещественный массив из 40 элементов. Элементы массива могут принимать произвольные значения. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

 

Реализовать:
опишите на русском языке или на одном из языков программирования алгоритм, который находит и выводит минимальный положительный элемент массива или сообщение, что такого элемента нет.

 

Решение

I этап: выбор основного языка программирования

Среди четырех представленных языков (Pascal, Basic, чистый C, Естественный язык), лично мне, максимально импонирует язык программирования высокого уровня - Pascal.

Опишу основные преимущества (на мой субъективный взгляд) языка программирования Pascal перед остальными языками, представленными в данном задании:

  1. понятная лексика, то есть все ключевые слова, использующиеся в языке программирования, являются понятными;

  2. хорошо продуманная внутренняя структура программы (группировка по разделам: раздел подключения модулей, раздел декларации констант, раздел декларации переменных, раздел описания пользовательских типов данных);

  3. поддержка большого количества стандартных типов данных (например, в отличие от всех представленных в данном задании языков, язык Pascal имеет штатную поддержку такого типа данных как "Множество").

 

II этап: алгоритмизация поставленной задачи

Поставленная задача подразумевает следующую обработку: для примера рассмотрим одномерный вещественный массив, состоящий из десяти элементов, являющихся дробными случайными числами:

-34.313.310.0-4.320.012.43.24-78.390.3115.3значение
12345678910индекс

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

Выпишем все положительные числа в ряд, встречающиеся в исходном массиве не нарушая порядок их следования:

13.3, 10.0, 12.4, 3.24, 90.31, 15.3

очевидно, что самым наименьшим среди данных чисел является число 3.24, именно данное число и необходимо выписать в качестве ответа.

Важно понимать следующее, что для нахождения ответа потребуется просканировать все элементы массива, так как заранее неизвестно, в какой позиции располагается искомое значение (оно может находиться в самом начале, в самом конце или отсутствовать в принципе).

Возникаем закономерный вопрос: как определить, что наименьшего положительного элемента физически не существуем в заданном массиве?
Ответ: необходимо помимо самого минимального положительного числа запоминать и его номер, тогда, если после сканирования, номер равен нулю, это является сигналом того, что положительных элементов в исходном массиве не обнаружено.

 

III этап: реализация программы

Реализуем программу на языке программирования высокого уровня Pascal 7.0 с подробными комментариями.

{раздел декларации константных величин}
const
{нетипизированная константа, отвечающая за количество элементов исходного массива}
    N = 40;
{раздел объявления переменных}
var
{одномерный массив из 40 элементов вещественного типа}
    a : array[1..N] of real;
{счетчик циклов}
    i : integer;
{хранит индекс минимального положительного элемента исходного массива}
    j : integer;
{в данном алгоритме – неиспользуемая «лишняя» переменная}
    min : real;
{начало главного блока программы}
begin
{заполнение массива пользовательскими дробными числами вводом с клавиатуры}
    for i := 1 to N do
        readln(a[i]);
{вставка пустой строки для повышения читабельности}
    writeln;
{отталкиваемся от предположения, что положительных элементов в исходном массиве нет}
    j := 0;
{циклически просматриваем все элементы исходного массива}
    for i := 1 to N do
{текущий элемент массива является положительным}
        if(a[i] > 0) then
{найден первый положительный элемент или текущий элемент меньше минимального положительного среди просмотренных элементов массива}
            if(j = 0) or (a[i] < a[j]) then
{запоминаем индекс нового положительного минимального элемента}
                j := i;
{если минимальный положительный элемент был обнаружен}
    if(j <> 0) then
{вывод значение минимального положительного элемента}
        writeln(a[j]:7:2)
    else
{вывод диалога об отсутствии положительных элементов}
        writeln('Положительных элементов не обнаружено!');
end.

 
 
Рейтинг:
 
Проголосовало: 0
Количество просмотров: 1985
 
 
 

Категория C2 • задача №3

 

Комментарии

Для комментирования или зарегистрируйтесь
 

Остальные решения из билета №3 для подготовки к ЕГЭ по информатике 2013

 
Условие задачи
(наведите курсор мыши на ссылку)
Аудиовизуальное
решение
Мультимедийная
видеопрезентация
Решение в формате
слайд-шоу
Текстовое
решение
 
© 2011-2024 ООО "СтадиМен". Все права сохранены.
Перепечатка и использование материалов с данного сайта, разрешена только по согласию с владельцем.
Владелец оставляет за собой право воспользоваться 146 статьей УК РФ при нарушении авторских и смежных прав.
 
 
 
 
Авторизация на сайте
 
 
 
Обнаружили
ошибку на сайте?