Использование указателей bc++, страница 9

}

istream &operator>>(istream &fi, myClass &fp) // перегрузка >>

{

fi>>fp.a>>fp.b>>fp.pString;

fp.lenString=strlen(fp.pString);

return fi;

}

ostream &operator<<(ostream &fo, myClass &fp) // перегрузка <<

{

fo<<endl<<fp.pString<<endl<<fp.a<<" "<<fp.b;

return fo;

}

myClass operator+(myClass &fp1, myClass &fp2)  // перегрузка +

{

return myClass(fp1.a+fp2.a,fp1.b+fp2.b,strcat(fp1.pString,fp2.pString));

}

int operator==(myClass &fp1, myClass &fp2) // перегрузка ==

{

return (fp1.a==fp2.a && fp1.b==fp2.b && strcmp(fp1.pString,fp2.pString));

}

void main(void)

{

clrscr();

myClass pr1;   // создание объекта pr1;

cout<<"Ввод элементов объекта pr1 класса myClass a, b и строки:"<<endl;

cin >> pr1;

myClass pr2(pr1); // создание объекта pr2 копированием

cout<<"Вывод введенных элементов объекта pr2 класса myClass"<<pr2<<endl<<endl;  // вывод объекта pr2=pr1

pr1.DigOut();// вывод числовой части объекта

pr1.StrOut();// вывод строковой части объекта

myClass pr3(pr1+pr2); // создание объекта pr3 конкатенацией

cout<<endl<<"Конкатенация pr1 и pr2 "<< endl;

pr3.DigOut();// вывод числовой части объекта pr3

pr3.StrOut();// вывод строковой части объекта pr3

cout<<endl<<"Сравнение pr1 и pr2:";

if (pr1==pr2)

cout<<endl<<"Объекты pr1 и pr2 равны";

else

cout<<endl<<"Объекты pr1 и pr2 не равны";

}

Результаты выполнения программы:

Ввод элементов объекта pr1 класса myClass а, b и строки

10   20   текст

Вывод введенных элементов объекта pr2 класса myClass

текст

10   20

Числа объекта:   10   20

Строка объекта:  текст

Длина строки:      5

Конкатенация pr1и pr2

Числа объекта:   20   40

Строка объекта:  тексттекст

Длина строки:     10

Сравнение pr1 и pr2:

Объекты pr1и pr2 равны

Примечание: При выполнении задания использовать материалы лекций 16, 17 и 18. В разработанной программе должен соблюдаться стиль программирования, каждый раздел ее должен быть прокомментирован, программа должна носить индивидуальный характер. Отчет должен содержать титульный листок, постановку задачи, алгоритм ее решения, отлаженную программу на алгоритмическом языке и результаты расчета. На кафедру сдать отчет на бумажной основе, выполненный  в Word’e и исходный файл программы.

16. РАБОТА В ГРАФИЧЕСКОМ РЕЖИМЕ ВС++

Цель работы:

·  Научиться инициализировать графический режим ВС++;

·  Научиться пользоваться базовыми функциями видеопамяти;

·  Научиться использовать графические примитивы и вывод текстовых сообщений. 

Задание 1: Выполнить инициализацию графического режима двумя способами:

-  с помощью функции initgraph() и драйвера в формате .bgi;

-  с помощью утилиты bgiobj.exe и драйвера в формате .obj.

Предметная область может быть любая. При выполнении задания использовать материалы лекции 19.

Задание 2: В графическом режиме определить максимальные значения координат страницы. Создать графическое окно, установить текущую графическую позицию, нарисовать какой-либо объект. Использовать коэффициент «неквадратности» при изображении объекта. Изменить рисующий цвет и фон объекта. Переместить объект. Использовать перечислимый тип putimage_ops. Предметная область может быть любая. При выполнении задания воспользоваться материалами лекций 20 и 21.

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

#include <graphics.h>

#include <conio.h>

#include <math.h>

#include <ctype.h>

#include <iostream.h>

#include <stdlib.h>

void display_object(int); // функция, изображающая картинку из двумерного массива

void rotate_point(double ,int, int, double *,double *,int, int);// функция вращения точки