Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_Программирование.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
50.78 Кб
Скачать

Лекция № 32 а (самостоятельная работа)

Тема : Обработка структур.

План

  1. Структуры.

  2. Структуры и массивы.

  3. Массивы структур.

  4. Копирование структур.

  5. Примеры решения задач.

1.Структуры.

Структурой называется группа данных различных типов и/или назначения, которые представляют собой единый информационный элемент.

Например, к покупателю может относиться следующая информация :

Имя ; Адрес; Индекс;

Номер телефона ; Номер счета

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

2. Структуры и массивы.

Поле структуры может быть массивом. Поле структуры может быть другой структурой. Например :

struct address

{

char street[40];

char city[20];

char zipcode[10];

};

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

struct employee

{

char lastname[20];

char firstname[20];

long salary;

address home;

}

Доступ к полю адресов можно выполнить следующим образом :

employee person;

strcpy (person.home.street, “221 Baker St.”);

strcpy (person.home.city, “London”);

3. Массивы структур.

Возможно создание массива, элементами которого являются структуры. Например :

employee staff[100];

student group[30];

Первая инструкция создает массив из 100 элементов, каждый из которых обозначает сотрудника вместе со всеми полями, присущими элементу структуры employee. Вторая инструкция создает массив из 30 студентов.

Для доступа к полю city данного сотрудника необходимо указать соответствующий индекс массива, чтобы компьютер мог понять, о ком идет речь. Например :

staff[10].home.city

4. Копирование структур.

Используя оператор присваивания, можно копировать одну переменную в другую, имеющею ту же структуру. Например, пусть заданы следующие объявления :

employee worker1, worker2, staff[100];

Тогда, поскольку компилятор может копировать переменные с одинаковой структурой, допустим следующие инструкции :

worker1 = worker2;

staff[5] = worker1;

worker1.home = staff[1].home;

5. Примеры решения задач.

Определить структуру, описывающую понятие рациональное число. Написать и протестировать функции для сокращения, печати рационального числа, а также для деления двух рациональных чисел.

#include <stdio.h>

#include <math.h>

typedef struct

{

int chis;

int znam;

} Racion;

void put (Racion A)

{

if (A.chis*A.znam < 0) printf (“ - ”);

A.chis = abs (A.chis);

A.znam = abs(A.znam);

printf (“%d / %d”, A.chis, A.znam);

}

Racion SOKR (Racion A)

{

int I,min;

if (abs(A.chis) > abs (A.znam)) min = abs(A.znam);

else min = abs(A.chis);

for (i=min; i > 1; i--)

if (A.chis%i==0 && A.znam&i==0) break;

A.chis/=i;

A.znam/=i;

return A;

}

void DIV (Racion A, Racion B, Racion *C)

{

A = SOKR(A);

B = SOKR(B);

C - > chis = A.chis * B.znam;

*C = SOKR(*C);

}

void main ()

{

Racion A,B,C;

puts (“Введите числитель и знаменатель 1-й, а затем 2-й дроби : ”);

scanf (“%d%d%d%d”, &A.chis, &A.znam, &B.chis, &B.znam);

DIV (A, B, &C);

printf (“При делении ”); put (A); printf (“ на ”); put (B);

printf (“\n получилось ”); put (C);

}

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