|
Программирование >> Структурное программирование
Использование именованной константы, получившей соответствуюшее начальное значение #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;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |