Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга C++.doc
Скачиваний:
24
Добавлен:
10.11.2019
Размер:
2.48 Mб
Скачать

Типичная ошибка программирования

Забывают присвоить начальные значения элементам массива, требующим такого присваивания.

Следующее объявление массива

int n[5] = {32, 27, 64, 18, 95, 14};

вызвало бы синтаксическую ошибку, поскольку здесь список инициализации содержит шесть начальных значений, а массив имеет только 5 элементов.

Типичная ошибка программирования

Задание в списке начальных значений большего числа значений, чем имеется элементов в массиве, является синтаксической ошибкой.

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

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

создало бы массив из пяти элементов.

Программа 3

Присваивает начальные целые значения 1, 2, 3,… , 10 элементам массива S из десяти элементов и выводит на экран элементы массива с четным индексом.

#include <iostream.h>

void main()

{

const int arraySize = 10;

int S[arraySize]; // объявление массива целых чисел

// инициализация массива

for (int k = 0; k < arraySize; k++)

S[k] = k + 1;

cout << "Элемент" << '\t' << "Значение" << '\n';

// вывод на экран элементов массива с четным индексом

for (int i = 0; i < arraySize; i += 2)

cout << i << '\t' << S[i] << '\n';

}

Строка const int arraySize = 10; использует спецификацию const для объявления именованной константы arraySize, имеющей значение 10. Именованные константы должны получать при объявлении в качестве начальных значений постоянные выражения, которые после этого не могут быть модифицированы.

Типичная ошибка программирования

Присваивание значения именованной константе в выполняемом операторе является синтаксической ошибкой.

Именованные константы могут быть помещены в любом месте, где ожидается постоянное выражение. В программе 3 именованная константа arraySize используется для задания размера массива S в объявлении int S[arraySize];.

Использование именованных констант для задания размеров массивов делает программу более масштабируемой. В программе 3 первый цикл for мог бы заполнять 1000-элементный массив, если просто измененить значение arraySize в его объявлении с 10 на 1000. Если бы мы не использовали именованную константу arraySize, мы должны были бы изменить программу в трех разных местах, чтобы масштабировать программу для обработки массива из 1000 элементов. В больших программах эта техника становится более полезной для написания понятных программ.

Замечание по технике программирования

Определение размера каждого массива с помощью именованной константы делает программу более масштабируемой.

Программа 4

Программа суммирует значения, которые содержатся в массиве A из 12 целых чисел. Суммирование осуществляется в теле цикла for. Значения, используемые в качестве начальных для массива A, вводятся в программу пользователем с клавиатуры.

#include <iostream.h>

void main()

{

const int arraySize = 12;

int A[arraySize]; // объявление массива

cout << "Введите массив из 12 элементов. \n";

// инициализация массива

for (int j = 0; j < arraySize; j++)

{

// вывод на экран приглашения ввести очередной элемент массива

cout << "A[" << j << "]= ";

/* введенное пользователем значение считывается с клавиатуры и

запоминается в текущем элементе массива А*/

cin >> A[j];

}

int Sum = 0; /* объявление и инициализация

переменной для подсчета суммы */

// подсчет суммы

for (j = 0; j < arraySize; j++)

Sum += A[j];

cout << "Сумма значений элементов массива = " << Sum << '\n';

}

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