Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МВ_Прог_1курс_2n1часть.doc
Скачиваний:
11
Добавлен:
13.04.2015
Размер:
735.74 Кб
Скачать

4.3 Порядок виконання роботи

4.4 Контрольні запитання та завдання

4.5 Завдання

Определить основные операции для структуры, перегрузить операции работы с потоками ввода и вывода.

4.6 Варіанти завдань

Описания структур взять из лабораторной работы №2

4.7 Контрольний приклад

Определить операции ++, --, >, +, (), приведение к типу int, а также перегрузить операции работы с потоком для структуры студент.

#include <iostream>

#include <fstream>

#include <iomanip>

#include <string>

using namespace std;

struct Tstud{

char FIO[20];

int bal;

operator int() const {return (bal); }

void operator()(char* str,int mybal)

{

strcpy(FIO,str);

bal=mybal;

}

};

Tstud& operator ++(Tstud &Stud)

{

++Stud.bal;

return Stud;

}

Tstud& operator --(Tstud &Stud)

{

--Stud.bal;

return Stud;

}

Tstud operator +( const Tstud &Stud1, const Tstud &Stud2)

{

Tstud Stud=Stud1;

strcat(Stud.FIO,Stud2.FIO);

Stud.bal+=Stud2.bal;

return Stud;

}

bool operator >(const Tstud &Stud1, const Tstud &Stud2)

{

return Stud1.bal>Stud2.bal;

}

ostream& operator<<(ostream& out,Tstud &Stud)

{

out<<setw(20)<<setfill('.')<<setiosflags(ios::left)<<Stud.FIO<<Stud.bal;

return out;

}

istream& operator>>(istream& in,Tstud &Stud)

{

cout<<"Vvedite FIO\n";

in>>Stud.FIO;

cout<<"Vvedite Bal\n";

in>>Stud.bal;

return in;

}

int main()

{

Tstud Student1={"Ivanov",3};

Tstud Student2={"Petrov",5};

Tstud Student3;

Student1--;//Student1={"Ivanov",2};

Student2++;//Student2={"Petrov",6};

cout<<Student1<<endl;

cout<<Student2<<endl;

Student3=Student1+Student2;//Student3={"IvanovPetrov",8};

cout<<Student3<<endl;

Student3("Sidorov",5);//Student3={"Sidorov",5};

cout<<Student3<<endl;

if(Student1>Student2)

cout<< Student1.FIO<<" u4itsj lu4she "<<Student2.FIO<<endl;

else cout<< Student2.FIO<<" u4itsj lu4she "<<Student1.FIO<<endl;

const int n=3;

Tstud StudentMas[n];

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

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

cin>>StudentMas[i];

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

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

cout<<StudentMas[i]<<endl;

//Вывод в файл

ofstream out("f.txt");

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

out<<StudentMas[i]<<endl;

cin.get();

return 0;

}

Результаты работы программы:

Ivanov……….2

Petrov………..6

Ivanov Petrov..8

Sidorov………5

Petrov u4itsj lu4she Ivanov

Vvedite FIO

Петров

Vvedite Bal

2

Vvedite FIO

Сидоров

Vvedite Bal

5

Vvedite FIO

Максименко

VvediteBal

3

5 Основи розробки класів у мові С++

5.1 Мета роботи

5.2 Вказівки щодо організації самостійної роботи студентів Классы и объекты

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

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

Пример. Объявление класса “дата”. Хранит день, месяц, год. Способен установить дату, сообщить ее, и изменить на следующую.

class date

{

public:

int day, month, year;

void set (int, int, int);

void get (int&, int&, int&);

void next ();

};

Определение функций-компонент можно расположить внутри или за пределами объявления класса. В первом случае транслятор попытается создать функции inline. Во втором — имени определяемой функции должно предшествовать имя класса вместе с операцией разрешения видимости.

Все данные класса доступны из методов того же класса.

Пример. Определение функции-члена date::set, расположенное за пределами объявления класса.

void date::set (int d, int m, int y) {

day = d;

month = m;

year = y;

}

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

date d;

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

cout << d.day;

d.set(19,10,2001);