Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Массивы. При использовании простых переменных каждой области памяти для хранения данных соответствует свое имя




При использовании простых переменных каждой области памяти для хранения данных соответствует свое имя. Если с группой величин одинакового типа требуется выполнять однообразные действия, им дают одно имя, а различают по порядковому номеру. Это позволяет компактно записывать множество операций с помощью циклов. Конечная именованная последовательность однотипных величин называется массивом.

Описание одномерного массива в программе отличается от описания простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива (размерность): float а [10]; // описание массива из 10 вещественных чисел.

Элементы массива нумеруются с нуля. При описании массива используются те же модификаторы (класс памяти, инициализатор), что и для простых переменных. Инициализирующие значения для массивов записываются в фигурных скобках. Значения элементам присваиваются по порядку. Если элементов в массиве больше, чем инициализаторов, элементы, для которых значения не указаны, то их значения обнуляются: int b[5] = {3, 2, 1}; / / b[0]=3, b[l]=2, b[2]=l, b[3]=0, b[4]=0.

Элементы массива должны быть одного типа.

Пример (одномерных массивов – int, int):

#include <iostream>

#include <windows.h>

using namespace std;

string Rus(string text) //установка вывода русского языка в строке

{ CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str()); return text; }

int main()

{

int mass1[40]={'A','B','C','D','E'};

int mass2[40]={1,20,300,400,5000};

int i;

cout <<Rus("Содержимое первого массива до копирования")<<endl;

for (i=0; i<=15; i=i+1)

{ cout<<mass1[i]<<" "; }

cout<<endl; cout<<endl;

cout <<Rus("Содержимое второго массива до копирования")<<endl;

for (i=0; i<=15; i=i+1)

{ cout<<mass2[i]<<" "; }

cout<<endl; cout<<endl;

for (i=0; i<=15; i=i+1) //копирование первого массива во второй

{ mass2[i+5]=mass1[i]; }

cout <<Rus("Содержимое второго массива после копирования")<<endl;

for (i=0; i<=15; i=i+1)

{ cout<<mass2[i]<<" "; }

cout<<endl;

return 0;

}

Поскольку переменная обоих массива заявлена как int, то

- ячейка первого массива имеет длину 4 байта (символьная переменная отображается в массиве как число длиной 1 байт);

- ячейка второго массива имеет длину 4 байта;

- копирование первого массива во второй происходит без проблем.

Пример (одномерных массивов – char, int):

#include <iostream>

#include <windows.h>

using namespace std;

string Rus(string text) //установка вывода русского языка в строке

{CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str()); return text; }

int main()

{

char mass1[40]={'A','B','C','D','E'};

int mass2[40]={1,20,300,400,5000};

int i;

cout <<Rus("Содержимое первого массива до копирования")<<endl;

for (i=0; i<=15; i=i+1)

{cout<<mass1[i]<<" "; }

cout<<endl; cout<<endl;

cout <<Rus("Содержимое второго массива до копирования")<<endl;

for (i=0; i<=15; i=i+1)

{ cout<<mass2[i]<<" "; }

cout<<endl; cout<<endl;

for (i=0; i<=15; i=i+1) //копирование второго массива в первый

{ mass1[i+5]=mass2[i]; }

cout <<Rus("Содержимое первого массива после копирования")<<endl;

for (i=0; i<=15; i=i+1)

{cout<<mass1[i]<<" "; }

cout<<endl;

return 0;

}

Поскольку переменная первого массива заявлена как char, то

- ячейка первого массива имеет длину 1 байт;

- ячейка второго массива имеет длину 4 байта;

- копирование второго массива в первый происходит с потерей информации: при выводе mass1[i] с типом переменной char имеем:


1=> 00000001=>1 => ' '

20=> 00010100=>20 => '╕'

300=> 1 00101100=>44 => ','

400=> 1 10010000=>144=> 'Р'

5000=>1001111 00010000=>136=> 'И'

 

Cпособ объединения (“склеивания”) символьных массивов:

#include <iostream>

#include <cstring> //включение библиотеки операций со строками

using namespace std;

int main()

{

char s1[8] = "q wert ";

char s2[4] = "123";

char s3[10];

strcpy(s3, s1); //копирование 1 строки в 3

strcat(s3, s2); //добавление 2 строки в конец 3

for (int i=0; i<=10; i++)

{

cout<<s3[i]; //содержимое 3 строки

}

return 0;

}

Многомерные массивы задаются указанием каждого измерения в квадратных скобках, например, оператор

int matrix [6][8];

задает описание двумерного массива из 6 строк и 8 столбцов. В памяти такой массив располагается в последовательных ячейках построчно. Многомерные массивы размещаются так, что при переходе к следующему элементу быстрее всего изменяется последний индекс (номер колонки). Для доступа к элементу многомерного массива указываются все его индексы, например, matrix[i][j].

При инициализации многомерного массива он представляется либо как массив из массивов, при этом каждый массив заключается в свои фигурные скобки:

int mass1 [3][4] = { {1, 2}, {3,0,5}, {6,7,8,9} };

Расположение элементов такого массива приведено в табл.6.1

 

Табл. 6.1. Расположение элеменов массива mass1

  j=0 j=1 j=2 j=3
i=0 [0] [0]=1 [0] [1]=2 [0] [2]=0 [0] [3]=0
i=1 [1] [0]=3 [1] [1]=0 [1] [2]=5 [1] [3]=0
i=2 [2] [0]=6 [2] [1]=7 [2] [2]=8 [2] [3]=9

 

Возможно выборочная запись переменной массива:

mass1[0][3]=100;

 


Пример (двумерного массива – int):

#include <iostream>

#include <windows.h>

using namespace std;

string Rus(string text) //установка вывода русского языка в строке

{CharToOem((LPCTSTR)text.c_str(), (LPSTR)text.c_str()); return text; }

int main()

{

int mass1 [3][4] = {{1, 2}, {3,0,5}, {6,7,8,9} };

for (int i=0; i<=2; i++)

{

cout<<Rus("Cтрока ")<<i<<": ";

for (int j=0; j<=3; j++)

{

cout<<mass1[i][j]<<" ";

}

cout<<endl;

}

cout<<"***********************"<<endl;

mass1[0][3]=100;

for (int i=0; i<=2; i++)

{

cout<<Rus("Cтрока ")<<i<<": ";

for (int j=0; j<=3; j++)

{

cout<<mass1[i][j]<<" ";

}

cout<<endl;

}

return 0;

}




Поделиться с друзьями:


Дата добавления: 2014-11-25; Просмотров: 495; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.