- •Вопрос 1
- •Вопрос 1
- •Доступ к элементам структур (полям данных)
- •Вопрос 1 Указатели на структуры
- •Операции над указателями на структуры
- •Вопрос 1
- •Доступ к элементам объединения (полям данных)
- •Доступ к элементам структур с битовыми полями
- •Вопрос 1
- •Вопрос 1
- •Билет №21
- •Вопрос 1
- •Билет №22
- •1. Задачи перестановок в массивах
- •Билет №23
- •Вопрос 1
- •Поиска максимального элемента в массиве и его номера
- •Сортировка вставкой Удаление элемента из массива
- •Билет №24
- •1. Динамическая память – это память, выделяемая программе для ее работы за вычетом сегмента данных, стека, в котором размещаются локальные переменные подпрограмм и собственно тела программы.
- •Билет №25
- •Объявление одномерных динамических массивов
- •Выделение памяти под одномерный динамический массив
- •Освобождение памяти, выделенной под одномерный динамический массив
- •Билет №26
- •Билет №27
- •1.Приемы чтения и записи динамических массивов
- •Билет №28
- •1.Динамические структуры данных – это структуры данных, память под которые выделяется и освобождается по мере необходимости.
- •Доступ к данным в динамических структурах
- •Работа с памятью при использовании динамических структур
Доступ к элементам структур (полям данных)
С помощью операций прямого и косвенного выбора (соответственно символы точка '.' и '->') организуется доступ к элементам структур. Первая операция используется со структурными объектами, а вторая – при наличии указателя на структурный объект.
Операция прямого доступа к элементам структуры ('.') – результатом является значение элемента структуры.Синтаксис операции прямого доступа к элементам структуры:ИмяСтруктуры.ИмяЭлементаСтруктуры
2. #include "stdafx.h"
#include <iostream>
using namespace std;
const int D = 3;
const int B = 10;
typedef int T[D];
typedef T *List;
void SortD(int k);
void Done();
void outDigs(int i);
List Data;
int PFirst[B], PLast[B], *PQNext;
int first, n, newL, tempL, i, nextI;
int _tmain(int argc, _TCHAR* argv[]){
int k;
cout << "Введите количество элементов массива n "; cin >> n;
Data = new T[n];
PQNext = new int[n];
for ( k = 0 ; k < n ; k++ ){
PQNext[k] = k + 1;
for ( int r = 0 ; r < D ; r++ )
Data[k][r] = 0;
} for ( k = 0 ; k < n ; k++ )
for ( int r = 0 ; r < D ; r++ )
Data[k][r] = rand()%B;
first = 0;
Done();
cout << endl;
for ( k = D - 1 ; k >= 0 ; k-- )
SortD(k);
Done();
cout << endl;
delete [] PQNext;
delete [] Data;
system("pause");
return 0;
}
// описание функции поразрядной сортировки
void SortD(int k){
for ( tempL = 0 ; tempL < B ; tempL++ ){
PFirst[tempL] = n;
PLast[tempL] = n;
}
i = first;
while (i != n){
tempL = Data[i][k];
nextI = PQNext[i];
PQNext[i] = n;
if ( PFirst[tempL] == n )
PFirst[tempL] = i;
else PQNext[PLast[tempL]] = i;
PLast[tempL] = i;
i = nextI;
}
tempL = 0;
while ( tempL < B && PFirst[tempL] == n )
tempL++;
first = PFirst[tempL];
while ( tempL < B - 1 ){
newL = tempL + 1;
while ( newL < B && PFirst[newL] == n )
newL++;
if ( newL < B )
PQNext[PLast[tempL]] = PFirst[newL];
tempL = newL; }}
/*описание функции вывода элементов в соответсвии со списком индесов в массиве PQNext*/
void Done(){
int i = first;
while ( i != n ){
outDigs(i);
i = PQNext[i]; }}
/*описание функции вывода элементов из массива Data, индекс которого задан ее аргументом*/
void outDigs(int i){
int j = 0;
while ( Data[i][j] == 0 && j < D )
j++;
if ( j == D )
cout << 0;
else
while ( j < D )
cout << Data[i][j++];
cout << " ";
}
Билет №16
Вопрос 1 Указатели на структуры
Указатель на структуру объявляется точно так же, как и указатель на данные простых типов: используется операция '*' и указывается тип данных. Тип данных структуры указывается заданием ключевого слова struct и имени шаблона этой структуры.
Синтаксис:
ИмяСтруктурногоТипа *ИмяУказателяНаСтруктуру
Например:
struct goods *p_goods;
struct student *p_stu1, *p_stu2;