Лекция: Сохранение результатов вычислений в массиве
Массивами называют структурные переменные, представляющие набор однотип-ных элементов – элементов массива. Доступ к элементам массива, называемым индекс-ными переменными, осуществляется по имени массива и набору индексов, однозначноопределяющих положение элемента в массиве. Если элементы массива сами не являются массивами, то такой массив называют одномерным и для обращения к элементам масси-ва используется только один индекс, иначе массив называют многомерным (двумерным, трехмерным и так далее).В этом разделе ограничимся рассмотрением одномерных мас-сивов.
В качестве индексов могут выступать выражения (в частности, константы и пере-менные) целого типа, которые записываются после имени массива в квадратных скобках через запятую. Минимальным значением индекса всегда является 0, соответственно мак-симальный индекс должен быть на единицу меньше размера массива.
Объявления массивов отличаются от объявлений простых переменных только тем, что после имен массивов в парах квадратных скобок записываются их размеры, а имена массивов являются указателями на область памяти, выделяемой для хранения зна-чений его элементов. Например,
float X[3], Z[3];
имена X и Z массивов будут указателями на области памяти, выделенные для хра-нения значений индексных переменных X[0], X[1], X[2] и Z[0], Z[1], Z[2].
Массивам, как и простым переменным, можно задавать начальные значения (что удобно при отладке программ), записав их списком в фигурных скобках через запятую, причем длина списка должна быть меньше или равна размеру массива. Например, в объ-явлении
double Y[10]={ 1.2, 4.2, -5.1, 4.4, -1.5};
первые пять из десяти элементов массива будут иметь начальные значения:
Y[0] = 1.2, Y[1] = 4.2, Y[2] = -5.1, Y[3] = 4.4, Y[4] = -1.5.
При решении задач, связанных с обработкой множеств значений в массивах или получаемых в результате вычисления значений функций, может потребоваться сохране-ние результатов вычислений для дальнейшего использования. В таких случаях необхо-димо выделить память для хранения результатов, объявив массив соответствующего ти-па, и очередное вычисленное значение сохранять в очередной ячейке массива, присваи-вая его индексной переменной — элементу этого массива с очередным значением индекса.
«Практикум по программированию на языке C в среде VS C++»
Размеры массива нельзя изменить во время работы программы, поэтому для обес-печения массовости алгоритма программы необходимо объявлять массивы с максималь-но возможными размерами, исходя из условий применения программы, обычно форму-лируемыми в задании на её разработку.
Свойство «массовость» алгоритма предполагает его применимость к различным, заранее оговоренным, наборам данных, в частности, задаваемых при вводе. В рассмот-ренном выше примере объявления массива Y, если он будет представлять исходные дан-ные для какого-либо алгоритма, свойство «массовость» может обозначать, что могут об-рабатываться любые наборы от одного числа до девяти чисел с любыми значениями, до-пустимыми для типа double.
В дальнейшем в заданиях на обработку массивов будут использоваться следую-щие сокращенные обозначения, которые рассмотрим на примерах:
Х(20) – будет обозначать, что для хранения данных должен использоваться одно-мерный массив, в котором подлежат обработке 20 последовательно расположенных эле-ментов.
Х(N), N<=20 – будет обозначать, что для хранения данных должен использоваться одномерный массив, в котором подлежат обработке первые N последовательно располо-женных элементов.
Иногда при постановке задач удобно использовать слово вектор или последова-тельность, имея в виду размещаемые в последовательных ячейках массива данные.
Пример. Составить программу вычисления и сохранения в массиве Y значений функции y=sin x и в массиве X — соответствующих значений аргумента. Аргумент должен изменяться в градусах с шагом dX от начального значения X0.
Программа
#include «stdafx.h» #include «math.h»
int _tmain(int argc, _TCHAR* argv[])
{
const int n=10;
double X[n], Y[n], X0, dX, Pi; int i;
printf(«Enter X0 :»); scanf("%lf",&X0); printf(«Enter dX :»);
«Практикум по программированию на языке C в среде VS C++»
scanf("%lf",&dX); Pi=atan(1.0)*4.0; for (i=0; i<n; i++)
{
X[i]=X0;
Y[i]=sin(X0*Pi/180);
X0+=dX;
}
for (i=0; i<n; i++)
printf("%6.2lf %lf\n",X[i],Y[i]);
return 0;
}