Скачать презентацию 9 Структуры Программирование на C 1 Скачать презентацию 9 Структуры Программирование на C 1

Параграф 9.ppt

  • Количество слайдов: 18

§ 9. Структуры Программирование на C++ 1 § 9. Структуры Программирование на C++ 1

Структуры представляет собой производный (составной) тип, определяемый программистом, создаваемый на основе существующих типов. Структура Структуры представляет собой производный (составной) тип, определяемый программистом, создаваемый на основе существующих типов. Структура включает в себя данные, называемые полями. Программирование на C++ 2

Описание структуры имеет следующий формат: struct [имя_структуры] { [тип_1] [имя_поля_1]; … [тип_N] [имя_поля_N]; } Описание структуры имеет следующий формат: struct [имя_структуры] { [тип_1] [имя_поля_1]; … [тип_N] [имя_поля_N]; } Программирование на C++ 3

Пример описания структуры для комплексных чисел: struct complex { // Вещественная часть float Re; Пример описания структуры для комплексных чисел: struct complex { // Вещественная часть float Re; // Мнимая часть float Im; } Программирование на C++ 4

После описания структуры можно объявить один или несколько объектов (переменных) как экземпляров этой структуры. После описания структуры можно объявить один или несколько объектов (переменных) как экземпляров этой структуры. // Объявлен объект x типа complex x; // Объявлен указатель // на объект типа complex *p; Программирование на C++ 5

Для доступа к полям (компонентам) объекта используется точка: имя_объекта. имя_поля Пример: x. Re – Для доступа к полям (компонентам) объекта используется точка: имя_объекта. имя_поля Пример: x. Re – обращение к полю Re объекта x x. Im – обращение к полю Im объекта x Программирование на C++ 6

Второй способ для доступа используется тогда, когда объявляется указатель на объект некоторой структуры. имя_указателя->имя_поля Второй способ для доступа используется тогда, когда объявляется указатель на объект некоторой структуры. имя_указателя->имя_поля Пример: p = &x; // обращение к полю Re объекта x p -> Re // то же самое (*p). Re Программирование на C++ 7

// Комплексные числа #include <stdio. h> void main() { struct complex { float Re; // Комплексные числа #include void main() { struct complex { float Re; float Im; }; complex x = {2. 5, 3. 7}; complex y = x; printf("Re=%-4. 1 fn. Im=%-4. 1 fn", y. Re, y. Im); } Программирование на C++ 8

// Создание массива комплексных чисел // Присвоение значений массива другому массиву #include <stdio. h> // Создание массива комплексных чисел // Присвоение значений массива другому массиву #include #define N 3 struct complex { float Re; float Im; }; Программирование на C++ 9

void main() { complex X[N], Y[N]; for (int i = 0; i < N; void main() { complex X[N], Y[N]; for (int i = 0; i < N; i++) { printf("n. Введите комплексное число: "); scanf ("%f%f", &X[i]. Re, &X[i]. Im); Y[i] = X[i]; printf("n. Y[%d]=(%5. 1 f, %5. 1 f)n", i, Y[i]. Re, Y[i]. Im); } } Программирование на C++ 10

// Создание массива Books, содержащего названия книг, // автора, цену // Вывод названий и // Создание массива Books, содержащего названия книг, // автора, цену // Вывод названий и авторов книг дешевле 100 р. #include #include #define Max. Title 30 #define Max. Autor 15 #define Max. Books 100 #define STOP “” struct book { char title[Max. Title]; char author[Max. Autor]; float value; }; // Название книги // Автор книги // Цена книги Программирование на C++ 11

void main() { book Books[Max. Books]; int k = 0; puts(“Введите название книги”); puts(“Пустая void main() { book Books[Max. Books]; int k = 0; puts(“Введите название книги”); puts(“Пустая строка – конец ввода”); while (strcmp(gets(Books[k]. title), STOP) && k < Max. Books) { puts(“Введите фамилию: ”); gets(Books[k]. author); puts(“Введите цену: ”); scanf(“%f”, &Books[k++]. value); puts(“Введите название книги”); puts(“Пустая строка – конец ввода”); } Программирование на C++ 12

puts(“Список книг дешевле 100 рублей”); for (int i = 0; i < k; i++) puts(“Список книг дешевле 100 рублей”); for (int i = 0; i < k; i++) if (Books[i]. value < 100) printf(“%s %sn”, Books[i]. title, Books[i]. author); } Программирование на C++ 13

Функции и структуры Программирование на C++ 14 Функции и структуры Программирование на C++ 14

// Функция для сложения двух комплексных чисел // передача по адресу void sum(complex x, // Функция для сложения двух комплексных чисел // передача по адресу void sum(complex x, complex y, complex *z); void main() { complex a = {2. 3, 3. 1}, b = {3. 4, -5. 7}, c; sum(a, b, &c); printf("c=(%5. 1 f, %5. 1 f)", c. Re, c. Im); } void sum(complex x, complex y, complex *z) { z -> Re = x. Re + y. Re; z -> Im = x. Im + y. Im; } Программирование на C++ 15

// Функция для сложения двух комплексных чисел // передача по ссылке void sum(complex x, // Функция для сложения двух комплексных чисел // передача по ссылке void sum(complex x, complex y, complex &z); void main() { complex a = {2. 3, 3. 1}, b = {3. 4, -5. 7}, c; sum(a, b, c); printf("c=(%5. 1 f, %5. 1 f)", c. Re, c. Im); } void sum(complex x, complex y, complex &z) { z. Re = x. Re + y. Re; z. Im = x. Im + y. Im; } Программирование на C++ 16

// Функция для сложения двух комплексных чисел // возвращаемое значение complex sum(complex x, complex // Функция для сложения двух комплексных чисел // возвращаемое значение complex sum(complex x, complex y); void main() { complex a = {2. 3, 3. 1}, b = {3. 4, -5. 7}, c; c = sum(a, b); printf("c=(%5. 1 f, %5. 1 f)", c. Re, c. Im); } complex sum(complex x, complex y) { complex z; z. Re = x. Re + y. Re; z. Im = x. Im + y. Im; return z; } Программирование на C++ 17

// Функция для сложения двух комплексных чисел // экономия памяти и времени complex sum(const // Функция для сложения двух комплексных чисел // экономия памяти и времени complex sum(const complex &x, const complex &y); void main() { complex a = {2. 3, 3. 1}, b = {3. 4, -5. 7}, c; c = sum(a, b); printf("c=(%5. 1 f, %5. 1 f)", c. Re, c. Im); } complex sum(const complex &x, const complex &y) { complex z; z. Re = x. Re + y. Re; z. Im = x. Im + y. Im; return z; } Программирование на C++ 18