Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_и_Пр_Бизнес_лекции.doc
Скачиваний:
84
Добавлен:
10.05.2015
Размер:
1.21 Mб
Скачать

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

Многомерный массив – это массив, компонентами которого являются массивы.

Пример объявления многомерного массива (двумерного массива) из двух элементов, каждый из которых является массивом из трех вещественных чисел:

float b[2][3];

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

int a[4][10][15];

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

a[0][9][4]=25;

Многомерные массивы можно инициализировать. Примеры допустимых вариантов инициализации массива:

float b[2][3]={1.2, 1.3, 1.4, 1.6,1.7, 1.8};

float b[2][3]={{1.2, 1.3, 1.4},{1.6, 1.7, 1.8}};

float b[][]={{1.2, 1.3, 1.4},{1.6, 1.7, 1.8};

Многомерные массивы располагаются в памяти так, что быстрее всего меняется последний индекс. Так данные двумерного массива, объявленного как

float b[2][3];

располагаются в памяти в следующем порядке:

b[0][0], b[0][1], b[0][2], b[1][0], b[1][1], b[1][2]

Двумерный массив можно представить в виде таблицы (матрицы). Так двумерный массив, объявленный как

float b[2][3];

можно изобразить матрицей из двух строк и трех столбцов:

0-столбец

1-столбец

2-столбец

0-строка

b[0][0]

b[0][1]

b[0][2]

1-строка

b[1][0]

b[1][2]

b[1][2]

Пример программы вычисления суммы чисел, расположенных выше главной диагонали матрицы целых чисел из n строк и n столбцов (n<=100):

#include <iostream.h>

#include <conio.h>

void main()

{

int a[100][100]; //матрица целых чисел

int s; //сумма элементов матрицы

int i, j; //номера строк и столбцов

int n; //размер матрицы

cout<<”n? “; cin>>n;

//Ввод матрицы

cout<<”a? “;

for(i=0; i<n; i++)

for(j=0; j<n; j++)

cin>>a[i][j];

//Вычисление суммы элементов выше главной диагонали

s=0;

for(i=0; i<n-1; i++)

for(j=i+1; j<n; j++)

s+=a[i][j];

cout<<”s=”<<s;

getch();

}

5. Строки

Строка в языках программирования – это последовательность символов, которая обрабатывается в программе как единый объект. Символами строки могут быть буквы (латинского алфавита и кириллицы, цифры, специальные знаки). В строке С++ после последнего значащего символа должен находиться символ с кодом 0 (нулевой символ). Символ с кодом 0 записывается в программе как ‘\0’.

5.1. Объявление строки

Синтаксис объявления строки-переменной:

char имя_строки[максимальный_размер_размер_строки+1];

Пример объявления строки, в которой может храниться не более 5 символов:

char s[6]; //выделено 6 байтов, из них 1 байт под 0-символ

Строку при объявлении можно инициализировать:

char s[6]=”ABC”; //выделено 6 байтов, заполнено 4 байта

char s[]=”ABC”; //выделено 4 байта, заполнено 4 байта

char s[6]={‘A’,’B’,’C’,’\0’}; //выделено 6 байтов заполнено 4

5.2. Посимвольная обработка строк

Над строками С++ не определены никакие операции, кроме операции индексации [] – обращения к отдельному символу строки.

Пример программы, подсчитывающей количество цифр в строке:

# include <iostream.h>

#include <conio.h>

void main()

{

char s[81]; //строка

int i, k; //номер символа и счетчик цифр

cout<<”s ? ”;

cin>>s; //ввод строки

k=0; //обнуление счетчика

i=0;

//Цикл поиска цифр в строке

while (s[i]!=’\0’)

{

if (s[i]>=’0’ && s[i]<=’9’) // s[i]-цифра

k++;

i++;

}

cout<<”k=”<<k;

getch();

}

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

Пример программы, которая заменяет в строке все строчные латинские буквы на соответствующие прописные буквы:

# include <iostream.h>

#include <conio.h>

void main()

{

char s[21]; //строка

int i; //номер символа в строке

cout<<”s ? ”; cin>>s;

i=0;

while (s[i]!=’\0’)

{

if (s[i]>=’a’ && s[i]<=’z’) //строчная буква

s[i]=s[i]-32;//замена на прописную: вычитаются коды

i++;

}

cout<<”s: ”<<s;

getch(); }