Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика отчет.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
241.15 Кб
Скачать

4)Сумма комплексных чисел

#include "iostream.h"

class Complex{

private:

double re;

double im;

public:

void SetRe(double x);

void SetIm(double y);

double GetRe();

double GetIm();

void Show(){cout<<re<<"+"<<im<<"i"<<endl;};

Complex(){

re=0;

im=0;

}

Complex(double x, double y){

re=x;

im=y;

}

~Complex()

{ ;}

friend Complex operator+ (Complex z1,Complex z2);

friend Complex operator_ (Complex z);

friend Complex operator- (Complex z1,Complex z2);

};

void Complex::SetRe(double x){

re=x;

}

void Complex::SetIm(double y)

{

im=y;

}

double Complex::GetRe()

{

return re;

}

double Complex::GetIm()

{

return im;

}

Complex operator+(Complex z1,Complex z2)

{

return Complex(z1.GetRe()+z2.GetRe(), z1.GetIm()+z2.GetIm());

}

Complex operator-(Complex z1,Complex z2)

{

return Complex(z1.GetRe()-z2.GetRe(), z1.GetIm()-z2.GetIm());

}

Complex operator- (Complex z)

{

return Complex(-z.GetRe(), -z.GetIm());

}

Complex operator*(Complex z1, Complex z2)

{

double re=z1.GetRe()*z2.GetRe()-z1.GetIm()*z2.GetIm();

double im=z1.GetRe()*z2.GetIm()+z2.GetRe()*z1.GetIm();

return Complex(re, im);

}

Void main(){

Complex p1, p2,p3;

double x,y;

cout<<"a=";

cin>>x;

cout<<"b=";

cin>>y;

p1.SetRe(x);

p1.SetIm(y);

p2.SetRe(2);

p2.SetIm(-1);

p3=p1*p2;

p1.Show();

p2.Show();

p3.Show();

}

5)Множественное наследование. Создать класс, произвольный от нескольких базовых

#include<iostream.h>

class Horse {

public:

Horse() {

cout<<"Horse constructor...";

}

virtual~Horse(){

cout<<"Horse destructor...";

}

virtual void Whinny() const{ cout<<"Whinny!...";}

private:

int itsAge;

};

class Bird{

public:

Bird(){cout<<"Bird construction...";}

virtual~Bird(){ cout<<"Bird destructor...";}

virtual void Chirp() const { cout<<"Chip...";}

virtual void Fly () const {

cout<<"I can fly";

}

private:

int itsWeight;

};

class Pegasus: public Horse, public Bird{

public :

void Chirp() const {Whinny();}

Pegasus(){cout<<"Pegasus construction...";}

~Pegasus() { cout<<"Pegasus destruction...";}

};

const int MagicNumber=2;

int main(){

Horse* Ranch[MagicNumber];

Bird* Aviary[MagicNumber];

Horse* pHorse;

Bird* pBird;

int choice, i;

for(i=0; i<MagicNumber; i++){

cout<<"\n(1)Horse (2)Pegasus : ";

cin>>choice;

if(choice ==2)

pHorse=new Pegasus;

else

pHorse=new Horse;

Ranch[i]=pHorse;

}

for(i=0; i<MagicNumber; i++){

cout<<"\n(1)Bird (2)Pegasus : ";

cin>>choice;

if(choice ==2)

pBird=new Pegasus;

else

pBird=new Bird;

Aviary[i]=pBird;

}

cout<<"\n";

for(i=0; i<MagicNumber; i++){

cout<<"\nRanch["<<i<<"]:";

Ranch[i]->Whinny();

delete Ranch[i];

}

for(i=0; i<MagicNumber; i++){

cout<<"\nAviary["<<i<<"]:";

Aviary[i]->Chirp();

Aviary[i]->Fly();

delete Aviary[i];

}

return 0;

}

6)Работа с множествами

#include<iostream>

#include<windows.h>

using namespace std;

char *Rus(const char* text);

const int MaxSize = 100;

class Set

{

int len; // количество членов

char members[MaxSize];// на этом массиве и будет построено множество

/* Функция find() закрыта, поскольку она не используется

вне класса Set.*/

int find(char ch);// выполняет поиск элементов

public:

//построение пустого множества

Set() { len=0; }

// получение количества элементов в множестве

int getLength(){ return len;}

void showset();// отображение множества

bool isMember(char ch);//проверка членства

Set operator +( char ch );// добавление элемента

Set operator -( char ch );// удаление элемента

Set operator +( Set ob2 );// объединение множеств

Set operator -( Set ob2 );// получение разности множеств

};

///////////////////////////////////////////////////////////////////////

/* функция возвращает индекс элемента , заданного параметром ch, или -1 , если таковой не найден */

int Set::find(char ch)

{

int i;

for (i =0;i< len ; i++)

if (members[i]==ch) return i;

return -1;

}

// отображает содержимое множества

void Set::showset()

{

cout<<"{";

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

cout << members[i] <<" ";

cout<<"}\n";

}

/* функция возвращает значение true .если символ сh является

членом множества, в противном случае возвращается значение false

*/

bool Set::isMember(char ch)

{

if (find(ch)!= -1) return true;

return false;

}

// добавление нового элемента в множество

Set Set::operator +(char ch)

{

Set newset;

if (len == MaxSize)

{

cout<<" множество заполнено /n";

return *this; //возвращает существующее множество

}

newset = *this;// дублирует существующее множество

// проверяем существует ли ухе в множестве такой элемент

if ( find(ch) == -1 )

//если такой элемент не найден

//его можно добавлять в множество

// включаем новый элемент в новое множество

{

newset.members[newset.len] = ch;

newset.len++;

}

return newset;

}

// удаляем элемент их множества

Set Set::operator - (char ch)

{

Set newset;

int i = find(ch);//переменная получит значение -1 если

// заданный элемент не будет найден в множестве

//копируем и уплотняем оставшиеся элементы

for (int j=0;j<len;j++)

if(j!=i) newset = newset+members[j];

return newset;

}

// Объединение множеств

Set Set::operator + (Set ob2){

Set newset = *this; //копируем первое множество

// добавляем в первое множество уникальные элементы из второго

for (int i=0;i<ob2.len;i++)

newset = newset + ob2.members[i];

return newset;// возвращаем модифицированное множество

}

// Разность множеств

Set Set::operator - (Set ob2){

Set newset = *this; //копируем первое множество

// "вычитаем" элементы из второго множества

for (int i=0;i<ob2.len;i++)

newset = newset - ob2.members[i];

return newset;// возвращаем модифицированное множество

}

// демонстрация использования класса Set

int main(){

// создаем пустое множество

Set s1;

Set s2;

Set s3;

s1=s1 +'A';

s1=s1 +'B';

s1=s1 +'C';

cout<<Rus(" множество s1 после добавления символов A B C : ");

s1.showset();

cout<<"\n";

cout<< Rus(" Тестирование членства с помощью функции isMember().\n");

if (s1.isMember('B'))

cout<<Rus(" B - член множества s1.\n ");

else

cout<<Rus(" B - не член множества s1.\n ");

if (s1.isMember('T'))

cout<<Rus(" T - член множества s1.\n ");

else

cout<<Rus(" T - не член множества s1.\n ");

cout<<"\n";

s1= s1-'B';

cout<<Rus(" множество s1 после s1=s1-'B': ");

s1.showset();

s1= s1-'C';

cout<<Rus(" множество s1 после s1=s1-'C': ");

s1.showset();

cout<<"\n";

s1=s1 +'A';

s1=s1 +'B';

s1=s1 +'C';

cout<<Rus(" множество s1 после добавления символов A B C : ");

s1.showset();

cout<<"\n";

s2=s2 +'A';

s2=s2 +'X';

s2=s2 +'W';

cout<<Rus(" множество s2 после добавления имволов A X W : ");

s2.showset();

cout<<"\n";

s3=s1+s2;

cout<<Rus(" множество s3 после s3=s1+s2 : ");

s3.showset();

s3=s3-s1;

cout<<Rus(" множество s3 после s3=s3-s1 : ");

s3.showset();

cout<<"\n";

s2=s2-s2;// очищаем s2

cout<<Rus(" множество s2 после s2=s2-s2 : ");

s2.showset();

cout<<"\n";

s2=s2 +'C';// помещаем символы ABC в обратном порядке

s2=s2 +'B';

s2=s2 +'A';

cout<<Rus(" множество s2 после добавления C B A: ");

s2.showset();

cout<<"\n";

Set s4;// пустое множество

cout<<Rus(" s4-пустое множество :");

s4.showset();

for ( char ch='A';ch<='Z';ch++)

s4=s4+ch;

cout<<Rus(" множество s4 после добавления всего латинского алфавита : \n");

s4.showset();

cout<<"\n";

return 0;

}

///////////////////////////////////////////////////////////////////////

char bufRus[256];

char* Rus(const char* text){

CharToOem(text,bufRus);

return bufRus;

}