Программирование >>  Структурное программирование 

1 ... 89 90 91 [ 92 ] 93 94 95 ... 342


Использование именованной константы, получившей соответствуюшее начальное значение #include <iostream.h>

main {)

Яconst int X = 7; присваивание начального значения именованной константе cout << Значение именованной константы х равно:

X << \п; return 0;

Значение именованной константы х равно: 7

Рис. 4.7. Правильное присваивание начального значения и использование именованной

константы

Именованные константы могут быть помещены в любом месте, где ожидается постоянное выражение. На рис. 4.5 именованная константа arraySize используется для задания размера массива s в объявлении

int S[arraySize];

При объявлении автоматических и статических массивов можно использовать только константы.

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

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

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

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

Завершение директивы препроцессора #include точкой с запятой. Помните, что директивы препроцессора не являются операторами С++.

Программа на рис. 4.8 суммирует значения, которые содержатся в массиве а из 12 целых чисел. Оператор в теле цикла for осуществляет суммирование. Важно помнить, что значения, используемые в качестве начальных для массива а, должны были бы вводиться в программу пользователем с клавиатуры. Например, следующая структура for

for (int j = 0; j < arraySize; j++) cin a[j];

считывает значения одно за одним с клавиатуры и запоминает их в элементах а.



Н£1Ш следующий пример использует массивы для суммирования результатов данных, полученных при опросе. Рассмотрим след5пющую постановку задачи:

К сорока студентам обратились с просьбой оценить качество пищи в студенческом кафетерии по десятибалльной шкале (1 означает отвратительное качество, а 10 означает отличное). Поместите сорок ответов в массив целых чисел и просуммируйте результаты опроса.

Это типичное применение массива (см. рис. 4.9.). Мы хотим просуммировать количество ответов каждого типа (т.е. от 1 до 10). Массив responses - это массив с 40 элементами, предназначенный для ответов студентов. Мы используем массив с 11 элементами frequency для подсчета числа каждого из ответов. Мы игнорируем первый элемент frequency[0], потому что более логично накапливать ответ 1 в элементе frequency[l], чем в frequency[0]. Это позволяет нам использовать каждый ответ непосредственно как индекс массива frequency.

Хороший стиль программирования 4.1

Старайтесь программировать понятно. Иногда имеет смысл пожертвовать более высокой эффективностью использования памяти или процессорного времени в пользу написания более понятной программы.

Совет по повышению эффективности 4.1

Иногда соображения эффективности далеко перевешивают соображения понятности.

Вычисление суммы элементов массива

tinclude <iostream.h>

main() (

const int arraySize = 12;

int a [arraySize] = {1, 3, 5, 4, 7, 2, 99, 16, 45, 67, 89, 45}; int total = 0;

for (int i = 0; i < arraySize; i++) total += a[i];

*::cout << Сумма значений элементов массива равна total endl; return 0;

Сумма Значений элементов массива равна 383

Рис. 4.8. Вычисление суммы элементов массива



Рейтинг; Частота

1

6 11

10 3

Рис. 4.9. Программа простого анализа опроса студентов

Первый цикл for берет ответы один за одним из массива response и дает приращение одному из десяти счетчиков (от frequency[l] до frequency[10]) в массиве frequency. Ключевым оператором цикла служит

++frequency[responses[answer]];

Этот оператор увеличивает соответствующий счетчик frequency в зависимости от значения responses[answer]. Например, если счетчик answer равен О, то элемент responses[answer] равен 1, так что +-)-frequency[responses[an-swer]]; на самом деле интерпретируется как оператор

++frequency[1];

который увеличивает элемент массива один. Если answer равен 1, responses[an-swer] равен 2, так что -t t-frequency[responses[answer]]; интерпретируется как оператор

++frequency[2];

Программа опроса студентов iinclude <iostream.h> #include <iomanip.h>

main () (

const int responseSize = 40, frequencySize = 11; int responses[responseSize] = (1, 2, 6, 4, 8, 5, 9, 7, 8,

10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10}; int frequency[frequencySize] = (0};

for (int answer = 0; answer < responseSize; answer++) ++frequency[responses[answer]];

cout Рейтинг setw(17) Частота endl;

for (int rating = 1; rating < frequencySize; rating++) cout setw(6) rating

<< setw(17) << frequency[rating] << endl;

return 0;



1 ... 89 90 91 [ 92 ] 93 94 95 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика