Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_na_vse_bilety_progi.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
492 Кб
Скачать
☆

Статические строки

#define SIZE 80 // Размер строки только константное данное

или

const int SIZE=80;

char str[SIZE];

char str[SIZE]=”Hello!”; // с инициализацией

Особенность строки: объем выделенной памяти отличается от реального размера введенной строки.

Реальный размер вычисляется.

Как определить адрес символа строки?

Имя строки является константным адресом строки.

str+i – адрес символа с индексом i (i=0, с шагом 1)

Как определить значение символа строки?

*(str+i) или str[i]

Динамические строки

Размерность может быть константой или переменной.

#define SIZE 80

или

const int SIZE=80

или

int SIZE=80;

или

cin>>SIZE;

char *p;

p=new char[SIZE];

…

delete []p;

Особенность – без инициализации

Как определить адрес символа строки?

p+i – адрес элемента с индексом i

*(p+i) – значение элемента с индексом i

p[i]

Стандартный цикл обработки строки

1) char str[80];

for (i=0; str[i]!=0; i=0)

{

алгоритм обработки str[i]/*(str+i)

}

2) перебор строки, когда переменная цикла – адрес текущего символа

char *pBegin=new char[80];

char *p; // адрес текущего символа

for (p=pBegin;*p!=0;p++)

{

алгоритм обработки текущего символа *p

}

Задача: дана строка, вычислить её размер

СТАТИЧЕСКИ

int main(void)

{

char str[80];

int i, kol;

cin.getline(str,80);

for(kol=0,i=0;str[i]!=0;i++)

kol++;

cout<<kol<<endl;

return 0;

}

ДИНАМИЧЕСКИ

int main(void)

{

char *p=new char[80];

int n=0;

cout << "\n Введите строку:";

cin.getline(p,80);

// цикл построен таким образом, что p содержит адрес текущего символа

while(*p!=0)

{

n++;

p++; // Увеличиваем адрес для перехода к следующему символу

}

cout << "\n Кол-во=" << n << endl;

return 0;

}

+

  1. Одномерные числовые массивы в языке С++: объявление (статически), инициализация, доступ к элементам массива, стандартный цикл обработки.

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

Особенность – любая обработка численного массива – цикл.

Под числовой массив выделяем памяти столько, сколько необходимо.

Статические массивы

1) Как объявить?

Размерность задается только константным данным(или целым)

#define SIZE 7

или

const int SIZE=7;

int mas[SIZE];

или

int mas1[SIZE]={1,2,3,4,5,6,7}; // с инициализацией

После выделения памяти в элементах массива находится «мусор». При объявлении массива возможна инициализация.

Если количество инициализирующих меньше, чем необходимо, остальные обнуляются. Если больше – ошибка компиляции.

2) Как определить адрес и значение элемента массива?

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

mas+i – адрес элемента с индексом i : от 0 для SIZE-1 шагом 1

*(mas+i) – значение элемента с индексом i : от 0 для SIZE-1 шагом 1

Динамические массивы

Размер может задаваться константным или переменной, значение которой должно быть определено присваиванием или вводом. Память выделяется в процессе выполнения программы.

const int SIZE=7; // или #define SIZE 7

int *p=new int[SIZE];

Указатель инициализируется адресом первого байта

p - содержит адрес начала массива

p+i – адрес элемента с индексом i : от 0 до SIZE-1 с шагом.

*(p+i) или p[i] – значение элемента с индексом i

Перебор элементов for (i=0;i<n;i++)

//Обращение к элементам массива по имени осуществляется по индексу, значение которого начинается с нуля.

mas[0]=1

mas[1]=2;

mas[2]=3;

  • for(i=0;i<SIZE;i++)

{

алгоритм обработки i-го элемента; cin>>* (a+i) или cin>>a[i];

}

+

  1. Двумерные числовые массивы в языке С++: объявление (статически), инициализация, доступ к элементам массива, стандартные циклы обработки.

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

на примере матриц

#define RAZ1 2

#define RAZ2 4

…

#define RAZN 7 // объявление многомерного массива

int MAS[RAZ1][RAZ2]…RAZ[N];

Элементы массива лежат в памяти последовательно – друг за другом, так, что быстрее всего изменяется самый правый индекс.

// Двумерный массив располагается построчно.

a [0] [0], a [0] [1], a [0] [2]

a [1][0], a [1] [1], a [1] [2]

Матрицы

Матрицы имеют два набора.

Элементы матрицы лежат в памяти по одному, друг за другом, построчно.

Статические матрицы

1) Как объявить матрицу?

Размер – константное данное

#define STR 3

#define STLB 4

или

const int STR=3, STLB=4;

int A[STR][STLB];

int B[STR][STLB]={ ,5,6,7,8,9,10,11,12}; // с инициализацией, где 1,2,3,4 – первая строка, 5,6,7,8 – вторая строка, 9,10,11,12 – третья строка.

int C[STR][STLB]={{1,2,3},{5,6,7,8},{9,10,11,12};

2) Адрес элемента матрицы

A[i] – адрес i-ой строки, т.е. адрес 1-го элемента в i-ой строке

0<=i<STR

A[i]+j – адрес элемента матрицы

0<=i<STR 0<=j<STLB

3) Значение элемента матрицы

*(A[i]+j) или A[i][j]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]