Условие задачи
Даны вектора в трехмерном пространстве, создать класс, в котором осуществить их сложение и вычитание.
Алгоритм работы
Создадим класс vektor который имеет следующую структуру:
private: int *a; - вектор
public:
void Sozd(); - выделение памяти под вектор.
void Vvod_Sl(); - создание вектора
void Slozh(vektor b, vektor c); - сложение двух векторов
void Vichit(vektor b, vektor c); - вычитание двух векторов
void Print(); - вывод на экран
void Del (); - удаление вектора
Метод Vvod_Sl создает один экземпляр класса и заполняет его данными, случайным образом, конструктор вызывается автоматически.
Метод print выводит на экран все поля экземпляра.
Было разработано меню, которое работает следующим образом: при нажатии соответствующей клавиши вызывается определенный метод.
Листинг программы
#include <iostream.h>
#include <stdlib.h>
#include <time.h>
class vektor{
int *a;
public:
void Sozd();
void Vvod_Sl();
void Slozh(vektor b, vektor c);
void Vichit(vektor b, vektor c);
void Print();
void Del ();
};
void main()
{
vektor a,b,c;
int n,m,n1,n2,m1,m2;
randomize();
int punkt;
cout<<"MENU:"<<endl;
cout<<"sozdat vektor______________________(1)"<<endl;
cout<<"Slozhenie__________________________(2)"<<endl;
cout<<"Vichitanie_________________________(3)"<<endl;
cout<<"Vivod massiva______________________(4)"<<endl;
cout<<"Udalenie massiva___________________(5)"<<endl;
cout<<"Otmena_____________________________(0)"<<endl;
cout<<endl;
cout<<"Viberite punkt menu ";
cin>>punkt;
cout<<endl;
while (punkt != 0)
{
switch (punkt)
{
case 1:
{
a.Vvod_Sl();
b.Vvod_Sl();
};break;
case 2:
{
cout<<"Slozhenie: ";
c.Vvod_Sl();
a.Slozh(b,c);
c.Del();
cout<<endl;
};break;
case 3:
{
c.Vvod_Sl();
a.Vichit(b,c);
c.Del();
cout<<endl;
};break;
case 4:
{
cout<<"1-ii vektor imeet koordinati: "<<endl;
a.Print();
cout<<endl;
cout<<"2-oi vektor imeet koordinati: "<<endl;
b.Print();
};break;
case 5:
{
a.Del();
b.Del();
cout<<"Vektora udaleni !"<<endl;
};break;
case 0:
{
punkt=0;
};break;
default:cout<<"Vi nechego ne vibrali. Prilozhenie bydet zakrito"<<endl;
}
cout<<endl;
cout<<"sozdat-(1), Slozh-(2), Vich-(3), Viv-(4), Ud-(5), Otm-(0)"<<endl;
cout<<endl;
cout<<"Viberite punkt menu ";
cin>>punkt;
cout<<endl;
}
}
void vektor::Sozd()
{
a=(int *) malloc (sizeof(int) * (3));
}
void vektor :: Vvod_Sl()
{
Sozd();
for (int i=0; i <= 2; i++)
{ *(a+i)= random(10); }
}
void vektor :: Slozh(vektor b,vektor c)
{
for (int i=0; i<=2; i++)
{
(c.a[i])=(*(a+i))+(b.a[i]);
}
cout<<"res:"<<endl;
c.Print();
}
void vektor :: Vichit(vektor b, vektor c)
{
for (int i=k1; i<=k2; i++)
{
(c.a[i])=(*(a+i))-(b.a[i]);
}
cout<<"res:"<<endl;
c.Print();
}
void vektor::Print()
{
cout << "A (";
for (int i=0; i <= 2; i++) { cout << *(a+i) << " ";}
cout << ") " <<endl;
}
void vektor :: Del ()
{ free(a); }
|
Набор тестов к программе
Задача решена:
Автор: Панькова Екатерина
группа: 121Ми
год: 2008
|