КАТЕГОРИИ: Архитектура-(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
Возможно выборочная запись переменной массива: 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; Просмотров: 519; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |