|
Умова
Створити клас для роботи з дійсними векторами. Конструктор за замовчуванням повинен заповняти його нульовими елементами. Крім цього включити методи для заповнення вектора заданими значеннями, виведення на екран його компонент. Перевантажити операцію множення для отримання скалярного добутку двох векторів. Використати його для розв’язування такої задачі. Дано 2 вектори розмірності n.
Обчислити
Текст програми
Файл 9 operatorX\vector\vector.h
#include <iostream>
using namespace std;
class vector
{
float* x;
int size;
public:
vector():x(0),size(0){};
vector(int);
vector(const vector&);
~vector();
float operator*(const vector&);
vector& operator=(const vector&);
friend istream& operator>>(istream&, vector&);
friend ostream& operator<<(ostream&, const vector&);
};
Файл 9 operatorX\vector\vector.cpp
#include "vector.h"
vector::vector(int n):x(new float[n]),size(n)
{
for(int i=0;i<size;i++) x[i]=0;
}
vector::vector(const vector& y):x(new float[y.size]),size(y.size)
{
for(int i=0;i<size;i++) x[i]=y.x[i];
}
vector::~vector()
{
delete[] x;
size=0;
}
float vector::operator*(const vector& y)
{
float s=0;
for(int i=0;i<size;i++) s+=x[i]*y.x[i];
return s;
}
vector& vector::operator=(const vector& y)
{
if(this==&y) return *this;
size=y.size;
delete[] x;
x=new float[size];
for(int i=0;i<size;i++) x[i]=y.x[i];
return *this;
}
istream& operator>>(istream& is, vector& y)
{
cout<<"Input vector:";
for(int i=0;i<y.size;i++) cin>>y.x[i];
return is;
}
ostream& operator<<(ostream& os, const vector& y)
{
cout<<"Output vector:\n";
for(int i=0;i<y.size;i++) cout<<y.x[i]<<" ";
cout<<endl;
return os;
}
Файл 9 operatorX\vector\use_vector.cpp
#include <iostream>
#include "vector.h"
using namespace std;
int main()
{
vector x(7),y(7);
cout<<"**Vector x**"<<endl;
cin>>x;
cout<<"**Vector y**"<<endl;
cin>>y;
cout<<"Scalar product= "<<x*y<<"\n";
float t;
if (x*y>5) {t=x*x; cout<<"x*x="<<t;}
else {t=y*y; cout<<"y*y="<<t;}
cout<<endl;
cout<<x<<y;
}
Дата добавления: 2015-11-14; просмотров: 37 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
BIG BREAK (12-15 minutes) | | | Перечень диагностических рубрик |