Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Тут можно читать онлайн Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - бесплатно полную версию книги (целиком) без сокращений. Жанр: Прочая старинная литература, издательство Вильямс, год 0101. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.

Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015 краткое содержание

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - описание и краткое содержание, автор Стивен Прата, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать онлайн бесплатно полную версию (весь текст целиком)

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 - читать книгу онлайн бесплатно, автор Стивен Прата
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Массив rain можно представить в виде двумерного массива, состоящего из пяти строк, каждая из которых содержит 12 столбцов (рис. 10.1). Изменяя второй индекс, вы перемещаетесь но строке, месяц за месяцем. Изменяя первый индекс, вы переходите вертикально вдоль столбца, год за годом.

Двумерное представление — это всего лишь удобный способ визуализации массива с двумя индексами. Внутренне такой массив хранится последовательно, начиная с первого 12-элементного массива, за которым следует второй 12-элементный массив, и т.д.

Давайте воспользуемся этим двумерным массивом в программе обработки погодных данных. Цель программы заключается в нахождении итоговой суммы осадков для каждого года, средних значений осадков за год и средних значений осадков за месяц. Чтобы вычислить итоговую сумму осадков за год, необходимо сложить все данные в отдельной строке. Чтобы получить среднее значение осадков за конкретный месяц, понадобится сложить все значения в заданном столбце. Двумерный массив упрощает визуальное представление и выполнение этих действий. Программа приведена в листинге 10.7.

Язык программирования C Лекции и упражнения 6е изд 2015 - изображение 283

Язык программирования C Лекции и упражнения 6е изд 2015 - изображение 284 Язык программирования C Лекции и упражнения 6е изд 2015 - изображение 285

Массивы и указатели

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

Чтобы найти итоговую сумму для заданного года оставьте year неизменным и - фото 286

Чтобы найти итоговую сумму для заданного года, оставьте year неизменным и позвольте month пройти через весь диапазон значений. Это реализует внутренний цикл for в первой части программы. Затем повторите процесс для следующего значения year. Именно это делает внешний цикл в первой части программы. Структура с вложенными циклами подобного рода является естественной для обработки двумерного массива. Один цикл обрабатывает первый индекс, а второй цикл — второй индекс:

Вторая часть программы имеет ту же самую структуру но теперь year изменяется - фото 287

Вторая часть программы имеет ту же самую структуру, но теперь year изменяется во внутреннем цикле, a month — во внешнем. Вспомните, что каждый раз, когда внешний цикл выполняет одну итерацию, внутренний цикл проходит через все свои итерации. Следовательно, при такой организации, прежде чем изменится месяц, цикл просматривает все года. Мы получаем среднее значение за пятилетний период для первого месяца, для второго месяца и т.д.

Инициализация двумерного массива

Инициализация двумерного массива построена на приеме, применяемом для инициализации одномерного массива. Прежде всего, вспомните, что инициализация одномерного массива выглядит следующим образом:

sometype arl [5] = {vail, val2, val3, val4, val5};

Здесь vail, val2 и т.д. являются значениями типа sometype. Например, если бы типом sometype был int, то значением vail могло быть 7, а если бы типом sometype был double, то значением vail могло быть 11.34. Но rain — это 5-элементный массив, каждый элемент которого является массивом, состоящим из 12 значений float.

380 глава 10

Следовательно, для rain в качестве vail должно быть значение, пригодное для инициализации одномерного массива значений float, такое как:

{4.3,4.3,4.3,3.О,2.О,1.2,0.2,0.2,0.4,2.4,3.5,6.6}

Другими словами, если sometype — массив из 12 значений double, то vail — это список из 12 значений double. Таким образом, для инициализации двумерного массива, подобного rain, нам необходим список из пяти таких сущностей, разделенных запятыми:

В этой инициализации используются пять заключенных в фигурные скобки списков - фото 288

В этой инициализации используются пять заключенных в фигурные скобки списков чисел, которые помещены во внешний набор фигурных скобок. Данные из первой внутренней пары фигурных скобок присваиваются первой строке массива, данные из второй внутренней пары скобок — второй строке массива и т.д. Рассмотренные выше правила относительно несоответствий между количеством данных и размером массива, применяются к каждой строке. Это значит, что если внутренний набор фигурных скобок содержит 10 чисел, то воздействие будет оказано только на начальные 10 элементов в первой строке. Последние два элемента в этой строке по умолчанию инициализируются нулем. Если чисел задано слишком много, возникает ошибка; числа не переносятся в следующую строку.

Внутренние фигурные скобки можно было бы не указывать, оставив только две внешних скобки. При правильном количестве записей результат будет таким же. Однако если записей недостаточно, массив заполняется последовательно, строка за строкой, пока данные не закончатся. Затем оставшиеся элементы инициализируются значением 0. На рис. 10.2 продемонстрированы оба способа инициализации массива.

Рис 102 Два метода инициализации массива Поскольку массив rain содержит - фото 289

Рис. 10.2. Два метода инициализации массива

Поскольку массив rain содержит данные, которые не должны быть модифицированы, при объявлении массива в программе используется модификатор const.

Большее количество измерений

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

int box [10] [20] [30];

Одномерный массив можно представлять себе как строку данных, двумерный массив — как таблицу данных, а трехмерный массив — как стопку таблиц данных.

Массивы и указатели 381

Например, о массиве box можно думать как о 10 двумерных массивах (каждый размером 20x30), уложенных друг на друга.

Массив box можно по-другому представлять себе как массив массивов, состоящих из массивов. То есть это 10-элементный массив, элементами которого являются 20-эле- ментные массивы. Каждый 20-элементный массив содержит элементы, представляющие собой 30-элементные массивы. Либо же массивы можно просто рассматривать с точки зрения количества необходимых индексов.

Обычно для обработки трехмерного массива применяются три вложенных цикла, для обработки четырехмерного массива — четыре вложенных цикла и т.д. В своих примерах мы ограничимся двумерными массивами.

Указатели и массивы

Как объяснялось в главе 9, указатели предоставляют символический способ работы с адресами. Поскольку аппаратные инструкции вычислительных машин в большой степени полагаются на адреса, указатели позволяют выражать действия в манере, близкой к машинному представлению. Такое соответствие делает программы с указателями эффективными. В частности, указатели предлагают эффективный метод манипулирования массивами. На самом деле, как вы увидите далее, система обозначения массивов является просто замаскированным использованием указателей.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Стивен Прата читать все книги автора по порядку

Стивен Прата - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык программирования C. Лекции и упражнения (6-е изд.) 2015 отзывы


Отзывы читателей о книге Язык программирования C. Лекции и упражнения (6-е изд.) 2015, автор: Стивен Прата. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x