Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Задача 1. Количество элементов между минимумом и максимумом

Читайте также:
  1. I. Гашение дуги с помощью полупроводниковых элементов
  2. I. О различии между чистым и эмпирическим познанием
  3. II этап Развитие грудобрюшного типа дыхания с включением элементов дыхательной гимнастики А.Н. Стрельниковой
  4. II. НАЦИОНАЛЬНАЯ ОХРАНА И МЕЖДУНАРОДНАЯ ОХРАНА КУЛЬТУРНОГО И ПРИРОДНОГО НАСЛЕДИЯ
  5. II.3.2. Эффекты взаимного влияния элементов
  6. III. Общение между супругами
  7. III. Отношения между культурами

Написать программу, которая для целочисленного массива из 100 элементов опре­деляет, сколько положительных элементов располагается между его максималь­ным и минимальным элементами. Предполагается, что все элементы массива различны.

Запишем алгоритм в самом общем виде.

1. Определить, где в массиве расположены его максимальный и минимальный эле­менты, то есть найти их индексы.

2. Просмотреть все элементы, расположенные между ними. Если элемент масси­ва больше нуля, увеличить счетчик элементов на единицу.

Перед написанием программы полезно составить тестовый пример, чтобы более наглядно представить себе алгоритм решения задачи. Ниже представлен пример массива из 10 чисел и обозначены искомые величины:

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

  1. Определить, где в массиве расположены его максимальный и минимальный элементы:
  1. Определить границы просмотра массива для поиска положительных элемен­тов, находящихся между его максимальным и минимальным элементами:

3. Обнулить счетчик положительных элементов. Просмотреть массив в указан­ном диапазоне. Если очередной элемент больше нуля, увеличить счетчик на единицу


Для экономии времени при отладке значения элементов массива задаются путем инициализации.

В программе использована управляющая последовательность \t, которая задает отступ при выводе на следующую позицию табуляции.

СОВЕТ

После нахождения каждой величины вставлена отладочная печать. Мы рекомендуем ни­когда не пренебрегать этим способом отладки и не жалеть времени, стараясь сделать эту печать хорошо читаемой, то есть содержащей необходимые пояснения и хорошо отформа­тированной. Это экономит много времени при отладке программы.

Массив просматривается, начиная с элемента, следующего за максимальным (мини­мальным), до элемента, предшествующего минимальному (максимальному). Ин­дексы границ просмотра хранятся в переменных ibeg и lend. В приведенной выше программе для определения их значений используется тернарная условная опера­ция. Можно поступить и по-другому: просматривать массив всегда от максимума к минимуму, а индекс при просмотре увеличивать или уменьшать в зависимости от их взаимного расположения.

В приведенной ниже программе направление просмотра, то есть приращение ин­декса, хранится в переменной d. Если массив просматривается «слева направо», она равна 1, иначе -1. Обратите внимание и на изменившееся условие продолже­ния этого цикла.


Ввод массива в этом варианте программы осуществляется с клавиатуры. Напоми­наем, что в этом случае желательно для проверки вывести введенные значения на печать.

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

1) a[imin] расположен левее a[imax];

2) a[imin] расположен правее a[imax];

Желательно также проверить, как работает программа, если a[imin] и a[imax] расположены рядом, а также в начале и в конце массива (граничные случаи). Элементы массива нужно задавать как положительные, так и отрицательные.

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

Часто бывает, что точное количество элементов в исходном массиве не задано, но известно, что оно не может превышать некое конкретное значение. В этом случае память под массив выделяется «по максимуму», а затем заполняется только часть этой памяти. Память можно выделить либо с помощью оператора описания в сте­ке или сегменте данных, либо в динамической области. Фактическое количество введенных элементов запоминается в переменной, которая затем участвует в орга­низации циклов по массиву, задавая его верхнюю границу. Этот подход является весьма распространенным, поэтому мы приводим ниже небольшую, но полезную программу, в которой выполняется только считывание элементов массивах кла­виатуры и их вывод на экран:


Несмотря на то, что значение константы n определяется «с запасом», надо обяза­тельно проверять, не запрашивается ли большее количество элементов, чем воз­можно. Привычка к проверке подобных, казалось бы, маловероятных случаев по­зволит вам создавать более надежные программы, а нет ничего более важного для программы, чем надежность. Впрочем, и для человека это качество совсем не лишнее.


Дата добавления: 2015-07-11; просмотров: 163 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Одномерные массивы и указатели| ВНИМАНИЕ

mybiblioteka.su - 2015-2024 год. (0.006 сек.)