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

 
 
 

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

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

 

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

 

Решение

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

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

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

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

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

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

 

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

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

6.57.2819.4-7.80.023.6-19.0-14.6-7.36.5значение
12345678910индекс

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

Во-вторых, для определения искомого номера, проведем графическую визуализацию и приступим к поиску.

 

Анализируем первый элемент массива:

6.57.2819.4-7.80.023.6-19.0-14.6-7.36.5значение
12345678910индекс

Очевидно, что число 6.5 является положительным, следовательно, переходим к следующему элементу массива.

 

Анализируем второй элемент массива:

6.57.2819.4-7.80.023.6-19.0-14.6-7.36.5значение
12345678910индекс

Очевидно, что число 7.28 является положительным, следовательно, переходим к следующему элементу массива.

 

Анализируем третий элемент массива:

6.57.2819.4-7.80.023.6-19.0-14.6-7.36.5значение
12345678910индекс

Очевидно, что число 19.4 является положительным, следовательно, переходим к следующему элементу массива.

 

Анализируем четвертый элемент массива:

6.57.2819.4-7.80.023.6-19.0-14.6-7.36.5значение
12345678910индекс

Очевидно, что число -7.8 является отрицательным числом, следовательно, поиск успешно завершаем и ответом является индекс данного элемента, то есть число четыре.

Промежуточный вывод: наименьший номер отрицательного элемента равен четыре.

 

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

 

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

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

{заголовок программы}
program C2;
{раздел подключения модулей}
uses
{подключаем модуль crt – console run time. Данный модуль содержит специализированные подпрограммы для обработки текста, звука, клавиатурных событий}
    crt;
{раздел декларации констант}
const
{нетипизированная константа, отвечающая за количество элементов исходного массива}
    N = 50;
{раздел объявления переменных}
var
{одномерный массив из 50 элементов вещественного типа}
    a : array[1..N] of real;
{счетчики циклов}
    i, j : integer;
{главный блок программы}
begin
{очистка дисплея от прошлых выводов}
    clrscr;
{заполнение массива случайными дробными числами вводом с клавиатуры}
    for i := 1 to N do
        read(a[i]);
{вставка пустой строки для повышения читабельности}
    writeln;
{начинаем проверку элементов массива, с элемента имеющего индекс значение 1}
    i := 1;
{пока счетчик не вышел за правую границу одномерного массива и текущий элемент массива больше или равен нулю, то переходим к следующему элементу, увеличив значение индекса элемента на 1}
    while(i <= N) and (a[i] >= 0) do
        i := i + 1;
{если счетчик вышел за правую границу одномерного массива а, то его значение будет больше N, и следовательно, отрицательных элементов в массиве не было обнаружено}
    if(i > N) then
        write('Отрицательных элементов нет!')
{иначе, выводим на дисплей минимальный индекс отрицательного элемента}
    else
        write(i);
{имитация задержки работы программы, до тех пор, пока пользователь не нажмет управляющую клавишу Enter}
    readln;
{финализирующий оператор программы}
end.

 

Резюме

  1. выбрали за базовый язык один из четырех предложенных языков программирования;

  2. провели дифференцированную алгоритмизацию поставленной задачи с графической визуализацией;

  3. произвели доработку программного кода, решающего поставленную задачу на языке программирования Pascal.

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

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

 

Комментарии

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

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

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