Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
23
Добавлен:
03.03.2016
Размер:
2.87 Mб
Скачать

Ввод - вывод одномерного массива

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

  1. Ввод массива с клавиатуры.

#define NMAX 1000

int main()

{

double x[NMAX]; //массив

int n; //текущий размер массива

int i; //параметр цикла

SetConsoleOutputCP(1251);

SetConsoleCP(1251);

do

{

printf("Введите размер массива от 1 до %d=",NMAX);

scanf("%d",&n);

}

while (n<0 || n>NMAX);

for (i=0;i<n;i++)

{

printf("x[%3d]=",i);

scanf("%lf",&x[i]);

}

getch();

return 0;

}

Каждой переменной, как простой, так и массиву, при старте программы выделяется столько памяти, сколько определено описанием этой переменной. В данном случае массиву X выделяется память для размещения NMAX = 1000 элементов (1000  4 = 4000 байт). Это поле памяти может полностью или частично использоваться при работе программы. Очевидно, что при этом должно выполняться отношение 0  nNMAX, где n - текущий размер массива X, который будет использоваться в данном сеансе работы программы.

Если текущую длину определять, как беззнаковый целочисленный тип, то достаточно проверить, что значение n не превышает NMAX.

. . .

unsigned int n;

. . .

do

. . .

while (n>NMAX);

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

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

- инициализация массива проводится при его определении. При этом количество элементов массива можно указывать явно :

double y[5] = {10, 3.5, -.2, 4, 2e-5};

double z[5] = {10, 3.5, -.2 };

int b[3] = {1,2,3,4};

или без явного указания количества элементов в массиве:

int a[] = {8,2,9,-7,0,15};

Массивы y и z определены вещественного типа количеством в 5 элементов. В фигурных скобках через запятую перечисляются значения, которые будут присвоены соответствующим элементам массивов. Если количество элементов инициализации меньше длины массива, то оставшиеся элементы будут заполняться нулями (z[3] = z[4] = 0).

Массив b определен длиной в 3 элемента, а количество инициализаторов – 4. В этом случае определяется ошибка при компиляции программы.

Длина массива a определяется по количеству инициализаторов, для данного примера она будет равна 6.

В случае инициализации массива при его определении вводить его значения с клавиатуры не нужно, но обязательно необходимо ввести текущую длину n и проверить ее на допустимый диапазон значений.

Соседние файлы в папке Прогр_обменка