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

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

Лабораторная работа 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 кг мяса...

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

Образование соседних чисел Фрагмент: Программная задача: показать образование числа 4 и числа 3 друг из друга...

Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

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

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