Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структуры и функции

Переменные типа структура могут быть параметрами функций. Функции могут возвращать в качестве результата величину структурного типа. Допустимо присваивание структурных переменных.

// Пример 6.1.2

// Пример программы с простой структурой языка С и функциями

#include <iostream>

using namespace std;

// объявление структуры для карандаша

// члены-данные, свойства, поля (data members, properties, fields)

// длина-см.; диаметр-мм.; резинка; цвет; цена; подпись

typedef unsigned short int USHORT;

enum MyColor {Red, Yellow, Green, Blue, Black, Simple};

struct Pencil {

USHORT itsLength;

USHORT itsRadius;

bool itsLastic;

MyColor itsColor;

float itsPrice;

char itsCaption[31];

};

// объявление функций

void ViewPencil(Pencil); // просмотр сведений карандаша

// определение сведений карандаша

Pencil SetPencil(USHORT, USHORT, bool, MyColor,float, char []);

// главная функция

int main() {

setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста

Pencil p1,p2,p3; // объявление структурных переменных(объектов)

// просмотр сведений - мусор

ViewPencil(p1);

ViewPencil(p2);

ViewPencil(p3);

cin.get();

// определение данных

p1=SetPencil(100,8,false,MyColor::Red,0.9,"KOHINOOR");

p2=SetPencil(40,10,true,MyColor::Green,0.25,"FRANCE");

p3=SetPencil(80,6,false,MyColor::Yellow,0.8,"ABCD");

// просмотр сведений

ViewPencil(p1);

ViewPencil(p2);

ViewPencil(p3);

cin.get();

// вычисление средней стоимости

double avg;

avg=(p1.itsPrice + p2.itsPrice + p3.itsPrice)/3.;

cout << "Средняя цена (AVG) =" << avg << endl;

cin.get();

// вычисление количества с резинкой

int k=0;

if (p1.itsLastic == true) k++;

if (p2.itsLastic) k++;

if (p3.itsLastic) k++;

cout << "k=" << k << endl;

cin.get();

// присваивание структур

p1=p2;

 

 

// просмотр сведений после присваивания

ViewPencil(p1);

ViewPencil(p2);

cin.get();

return 0;

}

 

// реализация функций

// просмотр сведений карандаша

void ViewPencil(Pencil p) {

cout << "Длина: " << p.itsLength << endl

<< "Радиус: " << p.itsRadius << endl

<< "Резинка: " << p.itsLastic << endl

<< "Цвет: " << p.itsColor << endl

<< "Цена: " << p.itsPrice << endl

<< "Надпись: " << p.itsCaption << endl << endl << endl;

}

// определение сведений карандаша

Pencil SetPencil(USHORT l, USHORT r, bool la, MyColor c,float pr, char ca[]) {

Pencil p;

p.itsLength=l;

p.itsRadius=r;

p.itsLastic=la;

p.itsColor=c;

p.itsPrice=pr;

//p.itsCaption=ca; // Ошибка!!!

strcpy(p.itsCaption,ca);

return p;

}


 

// Пример 6.1.3

// Пример программы с простой структурой языка С и функциями

# include <iostream>

using namespace std;

// структура с данными о сотруднике

struct Sotrudnic {

long int number; // номер

char name[11]; // фамилия

char gender; // пол

int age; // возраст

float weight; // вес

bool smoke; // курит?

float salary; // зарплата

};

// объявление функций

void ToScreen(Sotrudnic s); // вывод данных на экран

Sotrudnic FromKey(); // ввод данных с клавиатуры

// определение данных

Sotrudnic SetSotr(long int, char [], char, int, float, bool, float);

// главная функция

int main() {

setlocale(LC_ALL, "Russian"); // для вывода на экран русского текста

Sotrudnic s1,s2; // s1,s2-структурные переменные (объекты)

// размер структурных переменных

cout << "Размер = " << sizeof(Sotrudnic) << endl; // имя типа

cout << "Размер = " << sizeof(s1) << endl; // имя объекта

// вывод данных на экран - мусор

ToScreen(s1);

ToScreen(s2);

 

// определение данных

s1=SetSotr(1000,"Ivanov",'m',25,70.5,true,500.5);

s2=SetSotr(2000,"Petrova",'w',22,60.5,false,400.5);

// вывод данных на экран

ToScreen(s1);

ToScreen(s2);

// ввод данных с клавиатуры

s1=FromKey();

s2=FromKey();

// вывод данных на экран

ToScreen(s1);

ToScreen(s2);

// вычисление среднего возраста

float avg=(s1.age + s2.age)/2.;

cout << "Средний возрамт (AVG) =" << avg << endl << endl;;

cin.get();

return 0;

}

// реализация функций

// вывод данных на экран

void ToScreen(Sotrudnic s) {

cout<<"Номер: "<<s.number<<'\n'<<"Фамилия: "<<s.name<<'\n'
<<"Пол: "<<s.gender<<endl;

cout<<"Возраст: " <<s.age <<'\n'<<"Вес: "
<<s.weight<<" кг."<<'\n'<<"Курение: "<<s.smoke<<endl;

cout<<"Зарплата: "<<s.salary<<"\n\n\n"<<endl;

cin.get();

}

// ввод данных с клавиатуры

Sotrudnic FromKey() {

Sotrudnic s;

cout<<"Номер: "<<endl;

cin>>s.number;

cout<<"Фамилия: "<<endl;

cin>>s.name;

cout<<"Пол: "<<endl;

cin>>s.gender;

cout<<"Возраст: "<<endl;

cin>>s.age;

cout<<"Вес: "<<endl;

cin>>s.weight;

cout<<"Курение?(1-да,0-нет): "<<endl;

cin>>s.smoke;

cout<<"Зарплата: "<<endl;

cin>>s.salary;

return s;

}

// определение данных

Sotrudnic SetSotr(long int tn, char fam [], char p, int a, float w, bool k, float st) {

Sotrudnic s;

s.number=tn;

strcpy(s.name,fam);

s.gender=p;

s.age=a;

s.weight=w;

s.smoke=k;

s.salary=st;

return s;

}

 

<== предыдущая лекция | следующая лекция ==>
Структуры С | Примеры использования структур из библиотек
Поделиться с друзьями:


Дата добавления: 2014-01-03; Просмотров: 294; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.022 сек.