4389

Использование массивов в языке С++

Реферат

Информатика, кибернетика и программирование

Использование массивов в языке С++ Одномерные массивы Массив (array) – это набор элементов, способных хранить данные одного типа. Каждый элемент хранения называется элементом массива. Объявляя массив, необходимо сначала указать тип храним...

Русский

2012-11-18

43.5 KB

8 чел.

Использование массивов в языке С++

  1.  Одномерные массивы

Массив (array) – это набор элементов, способных хранить данные одного типа. Каждый элемент хранения называется элементом массива. Объявляя массив, необходимо сначала указать тип хранимых данных, а затем имя массива и его размер. Размером массива называется количество его элементов, указываемое в квадратных скобках.

 Пример 5.1. long LongArray[25];

В примере 5.1. объявлен массив с именем LongArray из 25-ти элементов типа long. Поскольку каждой переменной типа long необходимы четыре байта, весь объявленный набор займет непрерывную область памяти размером 100 байт.

К каждому из элементов можно обратиться по его номеру, расположенному в квадратных скобках после имени массива. Номера элементов массива начинаются с нуля. Следовательно, первым элементом массива LongArray будет LongArray[0], вторым – LongArray[1], последним – LongArray[24].

При записи значения в элемент массива компилятор вычисляет необходимую область памяти на основании размера типа элемента и размера массива. Если необходимо записать значение в переменную LongArray[5], являющуюся шестым элементом массива, компилятор умножает индекс 5 на размер переменной (в данном случае 4 байта). Затем текущий указатель смещается на 20 байтов от начального адреса массива, и записывается новое значение.

Если попробовать записать значение в элемент LongArray[50], то компилятор, проигнорировав тот факт, что такого элемента не существует, вычислит смещение от начала массива (200 байт), а затем запишет значение по этому адресу. Здесь могут оказаться другие данные, и запись нового значения может иметь непредсказуемые последствия.

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

int IntegerArray[5] = {10, 20, 30, 40, 50};

Если размер массива не указан, но список значений присутствует, то будет создан и инициализирован массив достаточного размера, чтобы содержать все перечисленные значения. Таким образом, эта строка аналогична предыдущей:

int IntegerArray[ ] = {10, 20, 30, 40, 50};

Нельзя инициализировать количество элементов, превосходящее объявленный размер массива:

int IntegerArray[5] = {10, 20, 30, 40, 50, 60};

Такая строка приведет к ошибке во время компиляции, поскольку объявлен массив для пяти элементов, а инициализировать пытались шесть. Но следующая запись вполне допустима:

int IntegerArray[5] = {10, 20};

В данном случае объявлен массив из пяти элементов, а инициализированы только два: IntegerArray[0] и IntegerArray[1].

Массивы могут иметь любые имена, допустимые для переменных. Имена массивов и переменных не могут совпадать в пределах одной области видимости. При объявлении количества элементов можно использовать не только константу, но и перечисление. Такой подход облегчает контроль над количеством элементов всех массивов, позволяя указать их размеры в едином месте.

Листинг 5.1. Задание размера массива с помощью перечислений

#include <iostream>

int main(){

enum WeekDays {Sun, Mon, Tue, Wed, Thu, Fri, Sat, DaysInWeek};

int ArrayWeek[DaysInWeek]={10, 20, 30, 40, 50, 60, 70};

std::cout<<"The value at Tuesday is: "<<ArrayWeek[Tue]<<" \n";

std::cout<<"The value at Friday is: "<<ArrayWeek[Fri]<<" \n";

char resp;

std::cin>>resp;

return 0;

}

РЕЗУЛЬТАТ

 The value at Tuesday is: 30

The value at Friday is: 60

  1.   Многомерные массивы

Можно создать массив более одной размерности. Каждая размерность представляет собой дополнительный индекс массива. Следовательно, двумерный массив имеет два индекса, трехмерный – три и т.д. Массив может иметь любое количество размерностей, но в большинстве случаев достаточно одной или двух.

Многомерный массив можно инициализировать тем же способом, что и одномерный, например

int theArray[5][3] =

{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

Чтобы было понятнее, значения при инициализации можно разделить фигурными скобками:

 int theArray[5] [3] = {

{1, 2, 3},

{4, 5, 6},

{7, 8, 9},

{10, 11, 12},

{13, 14, 15} };

Компилятор проигнорирует внутренние фигурные скобки, но они сделают набор чисел нагляднее.

  1.  Массивы символов (строки)

Строка в стиле С++ представляет собой массив символов, завершающийся пустым значением null. Строку можно объявлять инициализировать, как и любой другой массив, например:

Char Greeting[ ] = {‘H’,’e’,’l’,’l’,’o’, ‘ ‘, ‘W’, ‘o’,’r’,’l’,’d’, ‘\0’};

В данном случае объявлен массив символов Greeting, который инициализирован набором символов. Последний символ ‘\0’ является пустым символом (символом null). Именно он служит для функций языка С++ признаком конца строки. Хотя такой «посимвольный» подход и работоспособен, но труден для вывода и порождает слишком много ошибок. Язык С++ допускает использование более кратких форм. Например, объявление предыдущей строки может выглядеть так

Char Greeting[ ] = “Hello World”;

В последнем случае добавлять символ null в конце строки не нужно, компилятор сделает это сам (однако нужно помнить, что он там присутствует).

При объявлении строковой переменной необходимо удостовериться, что ее размер достаточен для выполнения поставленной задачи. Длину строки составляет количество символов строки, включая символы пробела и завершающий нулевой символ. Например, строка Hello World занимает 12 байт: Hello – 5 байт, пробел – 1, World – 5 и символ null – еще один.

Можно также создавать и неинициализированные символьные массивы. Однако при этом следует удостовериться, что в буфер будет записано данных не больше его вместимости. Для этого используется метод cin.get().

Листинг 5.2. Заполнение массива максимальным количеством символов с помощью метода cin.get()

// Применение метода cin.get()

#include <iostream>

using namespace std;

int main(){

char buffer[80];

cout<<"Enter the string: ";

cin.get(buffer, 79);

cout<<"Here's the buffer: "<<buffer<<endl;

char resp;

cin>>resp;

return 0;

}

Первый аргумент метода cin.get() – это буфер, объявленный ранее как массив символов (букв). Второй аргумент – максимально количество вводимых символов. В данном случае – 79, чтобы учесть завершающий символ null. Третий параметр (символ завершения ввода) необязателен, поскольку по умолчанию признаком завершения является новая строка. При вводе пробелов, символов табуляции или других непечатаемых символов они также войдут в состав строки. Символом новой строки заканчивается ввод. Ввод 79-ти символов также приведет к завершению ввода.


 

А также другие работы, которые могут Вас заинтересовать

24726. Человек как предмет общей психологии 35.5 KB
  Предложите и обоснуйте проект проведения лекции по теме Человек как предмет общей психологии Тема: человек как предмет общей психологии лекция. Цель: человек как предмет общей психологии. Ключевые понятия: объект психологии; предмет психологии; модельное описание психического облика человека: лингвистическая картина психического облика человека описание состава человеческой души: Аристотель Платон Плотин; ингредиенты психического облика; психика. Основные тезисы и краткое их доказательство: Первым и важнейшим объектом психологии...
24727. ТЕМПЕРАМЕНТ 43.5 KB
  Адресат: студенты 1го курса психологического факультета Цели: знакомство студентов с понятием темперамент раскрытие этого понятия через его определение и свойства с помощью темперамента показать психологические личностные различия. Задачи: определение темперамента история представлений о темпераменте свойства темперамента. Ключевые понятия: темперт темпераментные свойства типы ВНД типы темпта.
24728. Личность 41 KB
  Задачи: определение подходов к пониманию личности понятия личность подходов выявляющих ядро личности закономерностей развития личности направления исследования личности. Ключевые понятия: личность; система смыслов черт планов отношений; индивид субъект деятельности индивидуальность; биологическое и социальное социализация личности. и краткое их доказательство: В психологии имеются разные подходы к пониманию личности: она м. Подходы выявляющие ядро личности можно систематизировать след.
24729. Тромбоцитопеническая пурпура 140 KB
  Заболевание начинается исподволь или остро с появления геморрагического синдрома: кровоизлияния в кожу или слизистые оболочки и кровотечения из них. Для ТП характерны кровотечения из слизистых оболочек. Наиболее часто у детей наблюдаются кровотечения из носа маточные кровотечения у девочек в пубертатном возрасте. Реже бывают желудочнокишечные и почечные кровотечения.
24730. Патология периода новорожденности 127 KB
  Слайд 2 Последствия перенесенной энцефалопатии в периоде новорожденности нарушения психики церебральные параличи эпилепсия другие заболевания головного мозга. Некоторые дети перенесшие внутричерепную травму остаются с нарушениями психики с церебральными параличами с эпилепсией и другими заболеваниями головного мозга. Механизм развития патологического процесса при внутричерепной травме новорожденных можно представит в виде следующей схемы: Слайд 4 Схема развития патологического процесса при повреждении нервной системы...
24731. ПРОБЛЕМЫ НЕОНАТОЛОГИИ 204 KB
  МЛАДЕНЧЕСКАЯ СМЕРТНОСТЬ И ПУТИ ЕЕ СНИЖЕНИЯ Основное назначение педиатрии и охраны здоровья детей и подростков состоит в том чтобы способствовать нормальному физическому и психическому развитию как можно большего числа родившихся детей. Достижения недостатки а также задачи будущей работы отражают показатели детской смертности то есть отношение числа детей умерших в течение первого года жизни к тысяче родившихся. смертность детей в возрасте до 1 года – показатель социального благополучия страны. Показатель ее рассчитывается на 1000...
24732. ПЕРИОДЫ ДЕТСТВА 128.5 KB
  Внеутробный этап: период новорожденности от рождения до 28го дня жизни; ранний неонатальный от рождения до 7го дня жизни; поздний неонатальный – с 8го до 28й дня жизни; период грудного возраста с 28го дня жизни до 12 мес; ранний детский возраст от 1 года до 3 лет; дошкольный возраст от 3 до 6 лет; 5 младший школьный возраст от 7 до 11 лет; старший школьный период подростковый пубертатный от 12 до 1718лет. В различные периоды развития отмечается неравномерное совершенствование отдельных органов и систем организма...
24733. ПИТАНИЕ ДЕТЕЙ ПЕРВОГО ГОДА ЖИЗНИ. ЕСТЕСТВЕННОЕ ВСКАРМЛИВАНИЕ 164 KB
  слайд 1 Условия для нормального вскармливания ребенка грудного возраста правильная организация вскармливания систематический контроль за вскармливанием культурный уровень матери материальные возможности матери Ошибки допущенные в самом начале исправляются с трудом или вообще неисправимы. Однако гладкая мускулатура у ребенка развита слабее и наблюдается определенная склонность к дистензии желудочнокишечного тракта. Слайд 4 Особенности кала ребенка находящегося на грудном вскармливании кал яичножелтого цвета не имеет...
24734. ПИТАНИЕ ДЕТЕЙ ПЕРВОГО ГОДА ЖИЗНИ. Искусственное и смешанное вскармливание 97 KB
  Слайд 2 Причины перевода ребенка на ИВ: гипо менее 1 5 суточного объема или агалактия у матери; самовольный перевод матерью ребенка на ИВ; противопоказания со стороны матери для лактации; отсутствие у ребенка матери; противопоказания со стороны ребенка врожденные нарушения обмена веществ – галактоземия фенилкетонурия и т. Причины перевода ребенка на ИВ: гипо менее 1 5 суточного объема или агалактия у матери самовольный перевод матерью ребенка на ИВ противопоказания со стороны матери для лактации отсутствие у ребенка матери...