Сохранение результатов вычислений в массиве

 

Массивами называют структурные переменные,представляющие набор однотип-ных элементов – элементов массива. Доступ к элементам массива, называемым индекс-ными переменными,осуществляется по имени массива и набору индексов,однозначноопределяющих положение элемента в массиве. Если элементы массива сами не являются массивами, то такой массив называют одномерным и для обращения к элементам масси-ва используется только один индекс, иначе массив называют многомерным (двумерным, трехмерным и так далее).В этом разделе ограничимся рассмотрением одномерных мас-сивов.

 

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

Объявления массивов отличаются от объявлений простых переменных только тем, что после имен массивов в парах квадратных скобок записываются их размеры, а имена массивов являются указателями на область памяти, выделяемой для хранения зна-чений его элементов. Например,

 

floatX[3], Z[3];

 

имена X и Z массивов будут указателями на области памяти, выделенные для хра-нения значений индексных переменных X[0], X[1], X[2] и Z[0], Z[1], Z[2].

 

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

 

doubleY[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=sinx и в массиве 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]);

 

 

return0;

 

}