Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Типичная ошибка программирования 5
Завершение директивы процессора # include точкой с запятой. Помните, что директивы препроцессора не являются операторами С. Программа на рис.8 суммирует значения, которые содержатся в массиве а из 12 целых чисел. Оператор в теле цикле for осуществляет суммирование. Важно помнить, что значения, используемые в качестве начальных для массива а, должны были бы вводиться в программу пользователем с клавиатуры Например, следующая структура for for (int j = 0; j < arraySize; j++) cin >> a [j]; считывает значения одно за одним с клавиатуры и запоминает их в элементах а. Рис.8 – Вычисление суммы элементов массива
Следующий пример использует массивы для суммирования результатов данных, полученных при опросе. Рассмотрим следующую постановку задачи: К сорока студентам обратились с просьбой оценить качество пищи в студенческом кафетерии по десятибалльной шкале (1 означает отвратительное качество, а 10 означает отличное). Поместите сорок ответов в массив целых чисел и просуммируйте результаты опроса. Это типичное применение массива (см. рис.9.). Мы хотим просуммировать количество ответов каждого типа (т.е. от 1 до 10). Массив responses — это массив с 40 элементами, предназначенный для ответов студентов. Мы используем массив с 11 элементами frequency для подсчета числа каждого из ответов. Мы игнорируем первый элемент frequency[0], потому что более логично накапливать ответ 1 в элементе frequency[l], чем в frequency[0]. Это позволяет нам использовать каждый ответ непосредственно как индекс массива frequency. Рис.9 – Программа простого анализа опроса студентов
Первый цикл for берет ответы один за одним из массива response и дает приращение одному из десяти счетчиков (от frequency! 1] до frequency! 10]) в массиве frequency. Ключевым оператором цикла служит ++frequency[responses[answer]]; Этот оператор увеличивает соответствующий счетчик frequency в зависимости от значения responses!answer]. Например, если счетчик answer равен 0, то элемент responses!answer] равен 1, так что ++frequency!responses!answer]]; на самом деле интерпретируется как оператор ++frequency[1]; который увеличивает элемент массива один. Если answer равен 1, responses[answer] равен 2, так что ++frequency!responses[answer]]; интерпретируется как оператор ++frequency[2]; который увеличивает элемент массива два. Если answer равен 2, responses[answer] равен 6, так что ++frequency[responses[answer]]; интерпретируется как оператор
++frequency[6]; который увеличивает элемент массива шесть и т.д. Заметим, что независимо от числа ответов, полученных в опросе, для суммирования результатов достаточно лишь массива с одиннадцатью элементами (при игнорировании элемента нуль). Если данные содержат неверные значения, такие как 13, программа будет пытаться прибавить 1 к frequency[13]. Это выходило бы за границы массива. С не проверяет границ массивов, чтобы предупредить компьютер о ссылках на несуществующие элементы. Таким образом, выполняемая программа может выйти за пределы любого конца массива без предупреждения. Программист должен иметь гарантию, что все ссылки на массив находятся внутри границ массива.
|
|||||
Последнее изменение этой страницы: 2021-04-14; просмотров: 59; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.15.59.163 (0.004 с.) |