- •Методичні вказівки
- •1 Директивипрепроцесора. Багатомодульне програмування
- •1.1 Мета роботи
- •1.2 Вказівки щодо організації самостійної роботи студентів
- •1.3 Порядок виконання роботи
- •1.4 Контрольні запитання та завдання
- •1.5 Завдання
- •1.6 Варіанти завдань
- •1.7 Контрольний приклад
- •2.1 Мета роботи
- •2.2 Вказівки щодо організації самостійної роботи студентів
- •2.3 Порядок виконання роботи
- •2.4 Контрольні запитання та завдання
- •2.5 Завдання
- •2.6 Варіанти завдань
- •2.7 Контрольний приклад
- •3 Файлові потоки мови с
- •3.1 Мета роботи
- •3.2 Вказівки щодо організації самостійної роботи студентів
- •Ввод и вывод символов
- •Ввод и вывод строк
- •Ввод и вывод записей
- •Управление указателем файла
- •Состояние потока
- •Форматированный вывод
- •Форматированный ввод
- •Другие функции форматного ввода и вывода
- •Примеры
- •3.3 Порядок виконання роботи
- •3.4 Контрольні запитання та завдання
- •3.5 Завдання
- •3.6 Варіанти завдань
- •3.7 Контрольний приклад
- •4 Перегрузка операцій
- •4.1 Мета роботи
- •4.2 Вказівки щодо організації самостійної роботи студентів
- •4.3 Порядок виконання роботи
- •5.1 Мета роботи
- •5.2 Вказівки щодо організації самостійної роботи студентів Классы и объекты
- •Инкапсуляция
- •Конструктор
- •Деструктор
- •Указатели на объекты
- •Операции new и delete
- •5.3 Порядок виконання роботи
- •5.4 Контрольні запитання та завдання
- •5.5 Завдання
- •5.6 Варіанти завдань
- •5.7 Контрольний приклад
- •6 Наслідування, поліморфізм, інкапсуляция
- •6.1 Мета роботи
- •6.2 Вказівки щодо організації самостійної роботи студентів
- •Наследование
- •Уровни доступа
- •Виртуальные функции
- •Механизм работы виртуальных функций
- •Полиморфизм
- •Множественное наследование
- •6.3 Порядок виконання роботи
- •6.4 Контрольні запитання та завдання
- •6.5 Завдання
- •6.6 Варіанти завдань
- •6.7 Контрольний приклад
- •Рекомендована література
- •61166 Харків, просп. Леніна, 14.
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);