Словесная формулировка алгоритма:
1. Ввести исходные данные (одномерный массив стоимостей кладов и процент вознаграждения).
2. Сформировать заголовок цикла:
· Присвоить параметру цикла i его начальное значение (i=1).
· Проверить полученное значение параметра на соответствие диапазону изменения ():
– если i соответствует диапазону, выполнить тело цикла (рассчитать текущее значение функции для соответствующего значения аргумента пi = f(сi) и вывести их на печать), сформировать новое значение параметра цикла через предыдущее (i=i+1) и передать управление на п. 2.2;
– если i не соответствует диапазону (i>7), прекратить вычисления.
Графическое изображение имеет вид рис. 1 в).
Рис. 1. Блок схема алгоритма решения задачи: а) для цикла с предусловием, б) для цикла с постусловием, в) для цикла с параметром
Анализ рассмотренных способов построения цикла показывает, что с точки зрения компактности записи наиболее удобным является использование цикла с параметром, предписывающего универсальный вариант формирования его значений в заголовке цикла.
Программирование задачи
В Си, как в математике, можно оперировать с массивами в целом и с их элементами. При этом в зависимости от типов составляющих массив элементов в языке Си существуют понятия массива и структуры.
Массив – совокупность элементов одного типа.
Структура – совокупность разнотипных элементов.
Поэтому программирование задачи начинается с определения принадлежности используемых данных к массиву или структуре. В большинстве случаев элементы приводятся к одному типу, что позволяет объединить их в языке Си понятием массив. Обязательными условиями работы с массивом или его элементами (элементом) являются:
· описание массива;
· обозначение элементов.
Описание массивов
Любая информация в ЭВМ хранится в ячейках оперативной памяти. Поэтому предполагаемая работа с массивом требует предварительного выделения памяти для его хранения. Это действие выполняет описание массива.
Описание массива предписывает резервирование в памяти ЭВМ необходимого количества последовательно расположенных ячеек для хранения его элементов. Число ячеек выделяемого участка должно соответствовать количеству элементов массива. Желательно предусматривать увеличенный размер массива (по отношению к реально заданному). При этом возможные изменения условия задачи не потребуют модификации описания. Например, для реально заданного массива X(7) возможно в описании указывать X(7), X(10), X(15), что позволит во втором и третьем вариантах использовать программу для работы с массивом X на 10 и 15 элементов соответственно. Аналогично выбираются размеры массивов, численные значения которых конкретно не определены. Например, для массива Y(m) в соответствии с логикой задачи необходимо определить максимально возможное значение m (50, или 100, или 150) и использовать его в описании.
Описание обязательно для всех используемых в задаче массивов. Описание массивов производится в начале программы (функции) аналогично простым переменным. При этом используются отдельные операторы описания или в списках уже существующих (наряду с именами переменных) указываются имена и размеры каждого из массивов.
Структура отдельного оператора описания одномерного массива:
описатель имя[размер];
где
описатель – ключевое слово, определяющее тип элементов массива;
имя – идентификатор массива (формируется аналогично имени переменной);
размер – целая константа, определяющая количество элементов массива;
[ ] – ограничители размера массива.
Так, описатель одномерного массива целочисленных элементов с именем D размером 16 элементов имеет вид:
int d[16]; или увеличено int d[20];
Одномерный массив А в 30 вещественных элементов описывается:
float a[30];
Одномерный вещественный массив Y(m) может быть описан:
float y[50]; или float y[100]; или float y[150];
Совместное описание символьных переменных x, y, z, а также одномерных массивов T(120) и S(70) может иметь вид:
char x, y, z, t[120], s[70]; или char y, t[120], x, s[70], z;
т.е. порядок расположения элементов может быть любым.