Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Лабораторная работа 8. Структуры и перечисления





struct имя{ тип1 поле1; тип2 поле2;

...

типN полеN;

};

 

Описание структуры - это некий шаблон, по которому впоследствии создаются переменные. С точки зрения использования в программе имеет смысл говорить лишь о переменных структуры. Фактически переменная структуры - это объект, который имеет имя (имя переменной структуры) и поля, тип и названия которых определяются описанием структуры. Чтобы в программе создать переменную структуры, необходимо указать имя структуры, в соответствии с описанием которой создается переменная, и имя этой переменной. Другими словами, переменная структуры в программе создается точно так же, как и переменная любого базового типа, только вместо названия типа переменной указывается название структуры.

Сама по себе переменная структуры интерес представляет больше спортивный, чем практический. Все данные, которые могут понадобиться в процессе выполнения программы, записаны в поля переменной. Обращение к полю переменной структуры осуществляется через так называемый точечный синтаксис (стандартный синтаксис для объектно-ориентированного программирования) - указывается имя переменной структуры, и через точку имя поля, к которому выполняется обращение, т.е. в формате структура.поле. Примеры объявления и использования структур приведены в листинге 8.1.

 

// Листинг 8_1 Объявление и использование структуры

// demoStruct1.cpp: Defines the entry point for the console application.

//

 

#include "stdafx.h"

#include <iostream>

#include <cstring>

using namespace std;

#include <conio.h>

 

struct Marks

{

char name[80];

int phys;

int chem;

int maths;

};

 

struct Exams

{

double phys;

double chem;

double maths;

};

 

int main()

{

Marks ivanov,petrov,sidorov;

strcpy(ivanov.name,"Sergei Ivanov");

ivanov.phys=4;

ivanov.chem=3;

ivanov.maths=3;

 

strcpy(petrov.name,"Igor Petrov");

petrov.phys=5;

petrov.chem=4;

petrov.maths=4;

 

strcpy(sidorov.name,"Ivan Sidorov");

sidorov.phys=5;

sidorov.chem=4;

sidorov.maths=3;

 

Exams LastYear,ThisYear;

LastYear.chem=4.33333;

LastYear.phys=3.66667;

LastYear.maths=3.33333;

 

ThisYear.chem=(double)(ivanov. chem+petrov. chem+sidorov.chem)/3;

ThisYear.phys=(double)(ivanov.phys+petrov.phys+sidorov.phys)/3;

ThisYear.maths= (double) (ivanov. maths+petrov. maths+sidorov. maths) /3;

 

cout<<"Last year marks: "<< endl;

cout<<"Physics " << LastYear.phys<<endl;

cout<<"Chemistry "<<LastYear.chem<<endl;

cout<<"Mathematics "<<LastYear.maths<<endl;

cout<<endl;

 

cout<<"This year marks: "<<endl;

cout<<"Physics "<<ThisYear.phys<<endl;

cout<<"Chemistry "<<ThisYear. chem<<endl;

cout<<"Mathematics "<<ThisYear.maths<<endl;

 

getch();

return 0;

}

 

В программе объявлены две структуры: Marks и Exams. В структуру Marks входят четыре поля: символьный массив name типа char и целочисленные поля (тип int) phys, chem и maths.

Структура Marks создается в программе для хранения информации об успеваемости учащихся. Оценки по трем предметам (физика, химия и математика) заносятся в целочисленные поля phys, chem и maths соответственно. Поле-массив name предназначено для записи имени и фамилии учащегося.

Назначение структуры Exams состоит в хранении средних оценок по каждому из предметов в разные годы. Каждому году соответствует переменная структуры. Переменные структуры создаются непосредственно в главном методе программы. У структуры три поля, которые имеют такие же названия (phys, chem и maths), однако теперь поля объявлены как имеющие тип double. Дело в том, что средняя оценка, в отличие от оценки учащегося по предмету, в общем случае не является целым числом.

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

В главном методе программы сначала выполняется объявление переменных структуры Marks с именами ivanov, petrov и sidorov. Далее выполняется инициализация полей этих переменных структуры. В частности, заполнение массива name для переменной ivanov выполняется командой strcpy (ivanov. name, " Sergei Ivanov") (копирование строки "Sergei Ivanov" в поле-массив name). Обращаем внимание на способ ссылки на поле name переменной структуры ivanov: ссылка выполнена в виде ivanov. name. Аналогично выполняются ссылки на прочие поля переменных структуры:

ivanov.phys=4;

ivanov.chem=3;

ivanov.maths=3;

Точно так же заполняются поля двух других переменных (petrov и sidorov) структуры Marks.

Командой Exams LastYear, This Year в главном методе программы объявляются две переменные LastYear и ThisYear структуры Exams. Переменная LastYear предназначена для записи средних оценок прошлого года. Оценки (средние) за текущий год записываются в переменную ThisYear структуры Exams. Значения полям переменной структуры LastYear присваиваются командами

LastYear.chem=4.33333; LastYear.phys=3.66667; LastYear.maths=3.33333;

Соответствующие поля переменной структуры определяются как средние арифметические по набору учащихся (их в данном случае всего три):

ThisYear.chem=(double)(ivanov.chem+petrov.chem+sidorov.chem)/3; ThisYear.phys=(double)(ivanov.phys+petrov.phys+sidorov.phys)/3; ThisYear.maths=(double)(ivanov.maths+petrov.maths+sidorov.maths)/3;

 

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

Далее полученные значения для полей переменных LastYear и ThisYear структуры Exams выводятся на экран. Результат имеет следующий вид:

 

Last year marks:

Physics 3.66667

Chemistry 4.33333

Mathematics 3.33333

This year marks:

Physics 4.66667

Chemistry 3.66667

Mathematics 3.33333

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

 







Дата добавления: 2015-08-29; просмотров: 381. Нарушение авторских прав; Мы поможем в написании вашей работы!




Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...


Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...


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


Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Что такое пропорции? Это соотношение частей целого между собой. Что может являться частями в образе или в луке...

Растягивание костей и хрящей. Данные способы применимы в случае закрытых зон роста. Врачи-хирурги выяснили...

ФАКТОРЫ, ВЛИЯЮЩИЕ НА ИЗНОС ДЕТАЛЕЙ, И МЕТОДЫ СНИЖЕНИИ СКОРОСТИ ИЗНАШИВАНИЯ Кроме названных причин разрушений и износов, знание которых можно использовать в системе технического обслуживания и ремонта машин для повышения их долговечности, немаловажное значение имеют знания о причинах разрушения деталей в результате старения...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

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

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

Studopedia.info - Студопедия - 2014-2025 год . (0.013 сек.) русская версия | украинская версия