|
Программирование >> Элементы языков с и с++
Оператором #def ine мы определили символическую константу maxind, с помощью которой задаем (и легко можем изменять) размерность массива nd[], элементами которого мы воспользовались в качестве счетчиков. Признаком конца файла служит нажатие комбинации клавищ <Ctrl>+<z>. Вначале все счетчики (т. е. элементы массива) обнуляются, чтобы в них накапливать по единичке, если встретится соответствующая цифра. Обнуление происходит в цикле с помощью оператора for. Цикл заверщится, если нарушится условие продолжения цикла: номер элемента массива (им является значение переменной i) станет равным количеству элементов. ( Примечание Максимальный индекс всегда на единицу меньше количества элементов массива, указанного при объявлении массива, т. к. нумерация элементов идет с нуля. Далее идет уже знакомый нам цикл ввода символов, в котором проверяется, входит ли код каждого введенного символа в диапазон кодов от нуля до девятки. Если код введенного символа входит в диапазон кодов цифр, т. е. соответствует искомым цифрам, то в соответствующий элемент массива nd[] добавляется единица. ( Примечание ) Вспомним, что коды цифр идут по возрастанию и что (поскольку коды - это числа) мы можем выполнять над ними операцию минус или операции отношения (>, >=, <, <=, ! =, ==). гт C:\WINDOWS\system32V:rad.exe Enter your string and then press the key <Enter que rtl2df45vbn Nunber of digits are: for 1=0 nunber of digits=e for i=l nunber of digits=l for 1=2 nunber of digits=1 for i=3 nunber of digits=Э for 1=4 nunber of digits=1 for i=5 nunber of digits=l for 1=6 nunber of digits=e for i=7 nunber of dlgits=Q for i=8 nunber of digits=e for i=9 nunber of digits=e Для продолжения нажиите любую клавишу . . . Рис. 3.1. Результат работы программы листинга 3.1 Многомерные массивы Массивы размерности большей, чем один, объявляются так же, как и одинарной размерности, но справа (в квадратных скобках) к объявленному количеству элементов одинарной размерности добавляется количество элементов для следующей размерности и т. д. Например, двумерный массив целых чисел объявляется как int m[lO] [20];. В виде такого массива можно объявить прямоугольную матрицу чисел. Говорят, что это массив десяти строк чисел по 20 чисел в каждой строке или массив из десяти строк и двадцати столбцов. Обращаться к элементам такого массива следует, указывая номера строк и столбцов. Например: 1П[3] [8]; int i=3,j=8, к; k=m[i] [j] ; На примере двумерного массива покажем, как надо инициализировать такой массив (т. е. придавать его элементам начальные значения). Допустим, мы хотим составить программу расчета зарплаты работника. Для этой задачи нам понадобится справочник Количество дней по каждому месяцу в високосном и невисокосном году . Такой справочник можно представить в виде двумерного массива: int in[2] [13] ; В котором элементами первой размерности будут две строки: одна будет содержать данные по месяцам невисокосного года, а вторая - по месяцам високосного. Элементами второй размерности будет собственно количество дней в каждом из двенадцати месяцев. К тому же (т. к. элементы в массивах нумеруются с нуля) для удобства пользования нашим массивом введем еще один искусственный элемент, равный нулю, и поместим его на нулевое место во второй размерности. Это обеспечит более приемлемое обращение к мас- 3 Зак. 960 Заметим, что тело оператора while содержит всего один оператор (if) и потому не ограничено фигурными скобками. После обнаружения символа конца файла (комбинация клавиш <Ctrl>+<z>) происходит поэлементный вывод содержимого массива на устройство вывода. Здесь (так же, как и при инициализации) организован цикл с помощью оператора for, телом которого является функция printf (). Результаты работы программы приведены на рис. 3.1. сиву: например, величина т[2] [2] будет тогда означать количество дней високосного года в феврале . Массив можно записать: int m[2] [13]={0,31,28,31,30,31,30,31,31,30,31,30,31, 0,31,29,31,30,31,30,31,31,30,31,30,31); Можно объявлять не только числовые, но и символьные массивы (и не только такие - об этом мы узнаем в следующих главах). Например, символьный массив: char s[20][50]; задает не что иное, как массив из десяти символьных строк, в каждой из которых по 50 символов. Переменное число символов в такой конструкции задать нельзя, т. к. нельзя будет определить положение элемента массива, которое вычисляется исходя из постоянного количества элементов в строках и столбцах.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |