Необходимая программа на языке Паскаль: Найти в массиве количество элементов, модуль которых больше заданного числа и которые расположены до последнего отрицательного элемента.
К ней необходимо блок-схему: основная блок-схема, включающая подзадачи и отедльно блок-схемы подзадач, также, должны быть.
Важные уточнения к заданию:
- статические массивы.
- Данные должны подаваться и записываться из входных, выходных файлов.
- в случае отсутствия элемента, до или после которого надо что-то искать, надо только вывести сообщение.
- ни в коем случае не используем break, continue, exit и т.п.
- Не надо рисовать блок с инициализацией переменных как отдельную подзадачу. Инициализация входит в подзадачу! В данной контрольной работе мы выделяем две подзадачи – поиск номера элемента, удовлетворяющего какому-то условию, и поиск количества/суммы/произведения/среднего арифметического. В обеих подзадачах должны быть действия по инициализации переменных, необходимых при решении данной подзадачи. Только той подзадачи, которая непосредственно перед вами, а не всех остальных заодно тоже.
- Аномалии должны проверяться в программе.
- Если требуется наи ти что-то до или после, например, положительного элемента, то отсутствие положительного элемента – это не аномалия. Это один из вариантов решения.
- Файл, открываемый для записи, создается. Проверять его наличие бесполезно.
- Файловые переменные – это промежуточные данные. А файл вообще не есть данные. Файл содержит данные. Мы работаем с массивами. И даже если мы работаем с файлом, то файловая переменная – это все равно промежуточные данные. Файловая переменная в программе – это средство для получения доступа к файлу, средство для работы с файлом.
- Когда мы ищем последний элемент массива, удовлетворяющий некоторому условию, то надо идти с конца массива и использовать досрочный выход из цикла. Массив – это структура с прямым доступом к элементам, поэтому проход с конца не увеличивает время работы программы. При этом в большинстве случает искомый элемент будет находится ближе к концу массива, и проход с конца с досрочным выходом из цикла будет намного эффективнее.
- По сумме или произведению нельзя определить, были ли в массиве элементы, которые надо было сложить или перемножить. Результат может быть равен 0 или 1 даже при их наличии.
- Нет смысла писать отдельный цикл для проверки наличия суммируемых или перемножаемых элементов. При подсчете количества, суммы, произведения, а также максимума и минимума, досрочныи выход из цикла не используется. Надо просмотреть все элементы. При этом можно проверить наличие нужных элементов. Поэтому писать предварительно цикл для проверки наличия нужных элементов – это напрасный труд.
- Не нужно проверять начальное или конечное значение перед циклом. Если после прибавления/вычитания 1 конечное значение окажется меньше начального, тело цикла просто не выполнится ни разу.
- Если индексы массива начинают с 1, то и счетчик цикла надо инициализировать значением 1. Иначе получается странно и не логично. Кроме того, инициализация значением 0 приводит к тому, что изменение счетчика цикла пишется в начале тела цикла, что является плохим стилем программирования.
- Не надо привязывать изменение сче тчика цикла к условию, помещая его (изменение счетчика цикла) в часть else. И уж тем более не надо писать еще один if с противоположным условием.
- Если в операторе if-then-else одна часть намного меньше другой , меньшую часть надо писать первой . Это улучшает читабельность, меньшая часть не теряется за большей .
- Не используйте в условии цикла операцию . Следует использовать =. Это более надежный вариант.