русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Формат 2

struct имя-тега описатель[описатель[, описатель]…;

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

В формате 1 список-объявлений-элементов задаёт типы и имена элементов структуры. Имя-типа-структуры – это идентификатор, который именует тип структуры, определяемый списком объявлений элементов.

В формате 2 используется имя типа структуры для ссылки на тип структуры, определённый где-то в другом месте в области видимости и называемый шаблоном структуры. Поэтому список объявлений элементов в этом формате отсутствует.

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

Указатель рассматривается как указатель на структуру, массив – как массив структур, функция – как функция, возвращающая структуру.

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

Пример.

struct СТУДЕНТ {

char фио [40];

char ном_зач_кн [7];

char ном_гр [6];

int курс;

} список [20], *ptr;

struct СТУДЕНТ группа();

В этом примере объявляется массив структур типа СТУДЕНТ из 20 элементов, указатель на структуру типа СТУДЕНТ и функция, возвращающая структуру типа СТУДЕНТ.

Структура не может содержать в качестве элемента структуру такого же типа, но может содержать указатель на структуру этого типа при условии, что в объявлении структуры указано имя типа. Это позволяет создавать связные списки структур. Например:

struct tree{

int number;

struct tree *left;

struct tree *ritgh;

};

Пример.

Описать структуру, позволяющую работать с записями о студентах: ФИО, номер курса, номер групы, форма обучения, оценки, полученные за 3 сессии, если в каждой сессии было по 3 экзамена. Создать три экземпляра такой структуры, заполнить их данными, если формы обучения у студентов одинаковые, то вывести у каждого студента средний балл за всё время обучения, в противном случае посчитать средний балл по каждому предмету (учесть, что один предмет может читаться несколько семестров)

struct Fio // описание структуры «Фамилия, имя, отчество»

{

char fm[21]; // фамилия

char im[16]; // имя

char ot[21]; // отчество

};

struct sess // описание структуры «Сессия»

{

int ns; // номер сессии

char pred[41]; // название предмета

int oc; //

};

struct Stud // описание структуры “Студент”

{

struct Fio; // фамилия, имя, отчество

char ig[5]; // номер группы

int nc; // номер курса

char frob[3]; // форма обучения (дневная – “дн”, заочная - ”зо”)

struct sess os; // оценки за сессию

};

void main()

{ struct Stud st[3]; //создание трёх записей о студентах

// заполнение полей записей

for(int i=0;i<3;i++)

{

CharToOem(“\nВведите фамилию %d – го студента: ”,txt);

printf(txt, i+1);

gets(st[i].Fio.fm);

CharToOem(“\nВведите имя %d – го студента: ”,txt);

printf(txt, i+1);

gets(st[i].Fio.im);

CharToOem(“\nВведите отчество %d – го студента: ”,txt);

printf(txt, i+1);

gets(st[i].Fio.ot);

for(int j=0;j<3;j++)

{

CharToOem(“\nВведите данные по %d – й сессии: ”,txt);

printf(txt, j+1);

for(int k=0;k<3;k++)

{

CharToOem(“\n %d – й экзамен: ”,txt);

printf(txt, k+1);

CharToOem(“Предмет: ”,txt);

puts(txt);

gets(st[i].os.pred.);

CharToOem(“Оценка: ”,txt);

puts(txt);

gets(txt);

st[i].os.oc=atoi(txt);

}

}

}

Просмотров: 459


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.