- •1)Класс массив. Описывает нулевой единичный вектор, нулевой вектор произвольного размера и вектор произвольного размера с произвольными значениями
- •2) Описать скалярное произведение векторов
- •If(!m_pVec){
- •Void main(){
- •3)Записать обыкновенную дробь
- •4)Сумма комплексных чисел
- •Void main(){
- •5)Множественное наследование. Создать класс, произвольный от нескольких базовых
- •6)Работа с множествами
- •7)Вычислить комплексное число с помощью формулы Эйлера
- •Void main()
- •8)Вычислить время через определенный промежуток времени
- •9)Вычислить сумму, разность, произведение матриц
- •Void main()
- •10)Вычисление суммы, разности, произведения и деление комплексных чисел
- •Void main()
- •11)Вычислить радиус, диаметр, длину окружности, площадь и объем сферы
- •12)Работа с шаблонами
- •13)Банковские операции (чековая и сберегательная книжка)
- •Void display()
- •Void display()
- •14)Вычислить сумму векторов
- •15)Сортировка по возрастанию
- •Void main()
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;
}
