Двухмерные массивы

Лабораторная работа №5

МАССИВЫ И СТРОКИ

 

1. Цель работы: отработка навыков программирования с использованием возможностей массивов и строк.

Домашнее задание и методические указания по его выполнению

 

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

Общая форма объявления одномерного массива имеет следующий вид:

тип имя_переменной [размер];

Как и другие переменные, массив должен быть объявлен явно, чтобы компилятор выделил для него определенную область памяти (т.е. разместил массив). Здесь тип обозначает базовый тип массива, являющийся типом каждого элемента. Размер задает количество элементов массива. Например, следующий оператор объявляет массив из 100 элементов типа double под именем balance:

double balance[100];

Доступ к элементу массива осуществляется с помощью имени массива и индекса. Индекс элемента массива помещается в квадратных скобках после имени. Например, оператор

balance[3] = 12.23;

присваивает 3-му элементу массива balance значение 12.23.

Индекс первого элемента любого массива в языке С++ равен нулю.

 

Строки

Строка — это одномерный массив символов, заканчивающийся нулевым символом. В языке С++ признаком окончания строки (нулевым символом) служит символ '\0'. Таким образом, строка содержит символы, составляющие строку, а также нулевой символ.

В С++ поддерживаются два типа строк – встроенный тип, доставшийся от С, и класс srting из стандартной библиотеки С++. Рассмотрим первый из них.

Объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов. Например, объявление массива str, предназначенного для хранения строки из 10 символов, должно выглядеть так:

char str[11];

Последний, 11-й байт предназначен для нулевого символа.

Записанная в тексте программы строка символов, заключенных в двойные кавычки, является строковой константой, например,

"некоторая строка"

В конец строковой константы компилятор автоматически добавляет нулевой символ.

Для обработки строк в С++ определено много различных библиотечных функций. Чаще всего используются функции, описанные в табл. 1.

 

Таблица 1

Функции для работы со строками

Имя функции Выполняемое действие
strcpy(s1,s2) Копирование s2 в s1
strcat(s1,s2) Конкатенация (присоединение) s2 в конец s1
strlen(s1) Возвращает длину строки s1
strcmp(s1,s2) Возвращает 0, если s1 и s2 совпадают, отрицательное значение, если s1<s2 и положительное значение, если s1>s2

 

Продолжение табл. 1

strchr(s1,ch) Возвращает указатель на первое вхождение символа ch в строку s1
strstr(s1,s2) Возвращает указатель на первое вхождение строки s2 в строку s1

 

Эти функции объявлены в заголовочном файле <string.h>.

Класс string позволяет:

1.Инициализировать строку массивом символов или другим объектом типа string.

2.Копировать одну строку в другую.

3.Получать доступ к отдельным символам строки для чтения и записи. Во встроенных массивах для этого надо применять операции индексирования или косвенной адресации.

4.Сравнение двух строк на равенство.

5.Производить конкатенацию двух строк.

6.Вычислять длину строки.

7.Узнавать, пуста ли строка.

И это еще не все.

Для того чтобы использовать объекты класса string, необходимо включить заголовочный файл <string>.

#include <srting>

string st1(“Republic of Belarus\n”);

string st2=”Hello, World”;

string st3=st1+st2; //конкатенация строк

string st4; //задает пустую строку

Размеры строк устанавливаются автоматически. Длину строки возвращает функция size(). Длина не включает завершающий нулевой символ.

cout<<”Длина “<<st1<<”:”<<st.size()<<” символов”;

Функция empty() – возвращает true, если строка пуста и false в противном случае. Копирование строк происходит с помощью обычной операции присваивания: st3=st2. Для конкатенации строк используется операция сложения (+). К отдельным символам объекта типа string можно обратиться с помощью операции индексирования: st[i]=’.’. Допустимо также использование операций сравнения: ==, !=, <,<=,>,>=; добавления: +=; ввод, вывод : >>, <<.

Для работы со строками (поиск подстроки, вставка в строку, удаление символа и т.п) в классе string определено множество разнообразных методов.

 

Двухмерные массивы

Стандартом С++ определены многомерные массивы. Простейшая форма многомерного массива — двухмерный массив. Двухмерный массив — это массив одномерных массивов. Объявление двухмерного массива d с размерами 10 на 20 выглядит следующим образом:

int d[10][20];

Во многих языках измерения массива отделяются друг от друга запятой. В языке С++ каждое измерение заключено в свои квадратные скобки.

Аналогично обращению к элементу одномерного массива, обращение к элементу с индексами 1 и 2 двухмерного массива d выглядит так:

d[1][2]

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