У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент





який необхiдно видалити з вектора";

cin>>elem;

v1.DelItem(elem);//Видалення елементу з вектора

v1.PrintVector();

cout<<"Розмiр вектора - "<<v1.GetSize()<<endl;

cout<<"Введiть позицію на яку необхідно вставити елемент";

cin>>pos;

cout<<"Введiть елемент, який необхiдно додати до вектора";

cin>>elem;

v1.InsertItem(pos,elem);//Вставка елемента на позицію

v1.PrintVector();

cout<<"Розмiр вектора - "<<v1.GetSize()<<endl;

cout<<"min="<<v1.MinItem(v1)<<"max="<<v1.MaxItem(v1)<<endl;

break;}

case 2:

{

cout<<"Введiть висоту матрицi ";

cin>>n;

cout<<"Введiть ширину матрицi ";

cin>>m;

matrix m1(n,m);

m1.InputMatrix(m1);

m1.PrintMatrix(m1);

m1.Determinant(m1);

cout<<"Введiть висоту матрицi ";

cin>>p;

cout<<"Введiть ширину матрицi ";

cin>>q;

matrix m2(p,q);

m2.InputMatrix(m2);

m2.PrintMatrix(m2);

//Сума матриць

cout<<"Сума матриць"<<endl;

matrix m3(n,m);

m3.SumMatrix(m1,m2,m3);

m3.PrintMatrix(m3);

//Множення числа на матрицю

cout<<"Множення числа на матрицю"<<endl;

matrix m4(n,m);

m4.Number2Matrix(m1,2,m4);

m4.PrintMatrix(m4);

//Транспонування матриці

cout<<"Транспонування матрицi"<<endl;

matrix mt(m,n);

mt.Transpon(m1,mt);

mt.PrintMatrix(mt);

//Множення матриць

cout<<"Множення матриць"<<endl;

matrix mm(n,q);

mm.mmulti(m1,m2,mm);

mm.PrintMatrix(mm);

break;}

case 3:

{

//Множення матриці на вектор

cout<<"Введiть розмiр вектора: ";

cin>>vsize;

vector v2(vsize);

v2.InputVector(v2);

cout<<"Введiть висоту матрицi ";

cin>>n;

cout<<"Введiть ширину матрицi ";

cin>>m;

matrix m1(n,m);

m1.InputMatrix(m1);

m1.PrintMatrix(m1);

v2=multiply(m1,v2);

v2.PrintVector();

break;}

default: cout<<"Не вiрно введено операцiю"<<endl;

}

_getch();//чекаємо натиснення клавіші і виходимо з програми

return 0;

}

ДОДОТОК В

Опис класів вектор і матриця

#pragma once

class matrix;

//опис класу вектор

class vector

{

private:

int iSize; //розмір масиву

int* v;

public:

//vector();//конструктор без параметрів

vector(int Size); //конструктор з параметром

virtual ~vector(void); //деструктор

vector (const vector &);//ініціалізація вектора значенням іншого вектора (копіювання вектора)

void operator=(const vector &);//присвоювання елементів вектора

// Задання і-го елемента масиву

void SetItem(int Number, int Item);

// Задання розміру вектора

void SetSize(int Size);

// Отримання розміру вектору

int GetSize(void);

//Операція доступу до елемента вектора(з перевіркою границь)

int& operator[](int);

//Доступ до елементу без перевірки індексу

int& elem(int i);

// Додавання нового елементу до вектора

void AddItem(int Item);

// Видалення елемента вектора

void DelItem(int Number);

// Вставка елемента до вектора

void InsertItem(int Number, int Item);

//максимальний елемент

int MaxItem(vector &v);

//мінімальний елемент

int MinItem(vector &v);

//Друк вектора

void PrintVector(void);

//множення вектора на матрицю

friend vector multiply(matrix& m, vector& v);

//введення вектора

vector InputVector(vector &v);

};

//Опис класу матриця

class matrix

{

private:

int iWidth;

int iHeight;

vector* m; //оголошення матриці як масиву векторів

public:

//пустий конструктор

matrix();

//декструктор

~matrix();

//конструктор класу матриця

matrix(int Width, int Height);

//Задання елемента матриці

void SetItem(int wIndex, int hIndex, int Item);

// отримання ширини матриці

int GetWidth(void);

// отримання висоти матриці

int GetHeight(void);

//Доступ до елемента матриці

int& elem(int i,int j);

// Виведення матриці

void PrintMatrix(matrix &);

//множення матриці на вектор

friend vector multiply( matrix&, vector& );

//додавання матриць

matrix& SumMatrix(matrix & , matrix & , matrix &);

//множення матриці на число

matrix& Number2Matrix( matrix&, int Number, matrix &);

//транспонування

matrix& Transpon(matrix &, matrix &);

//множення матриць

matrix& mmulti(matrix &, matrix &, matrix &);

//введення матриці

matrix& InputMatrix(matrix &);

//визначення детермінанта матриці

int Determinant(matrix &m);

};

Реалізація класів вектор і матриці

#include "classes.h"

#include <iostream>

using namespace std;

//Реалізація класів вектор і матриця//

//Описання класу вектор

//пустий конструктор

/*vector::vector():iSize(0)

{

}*/

//конструктор класу вектор

vector::vector(int Size)

{

if (Size<=0) cout<<"Невiрний розмір вектора"<<endl;

else {

iSize = Size;

v = new int[iSize];

}

}

//ініціалізація вектора значенням іншого вектора

vector::vector(const vector & a)

{

iSize=a.iSize;

v = new int [iSize];

for (int i=0; i<iSize; i++) v[i]=a.v[i];

}

//присвоювання елементів вектора

void vector::operator =(const vector & a)

{

int i;

if (iSize!=a.iSize) cout<<"Недопустимий розмiр вектора"<<endl;

for (i=0; i<iSize; i++) v[i]=a.v[i];

}

//деструктор класу вектор

vector::~vector(void)

{

delete v;

}

// Задання і-го елемента масиву

void vector::SetItem(int Number, int Item)

{

v[Number]=Item;

}

// Задання розміру вектора

void vector::SetSize(int Size)

{

if (Size<=0) cout<<"Невірний розмiр вектора"<<endl;

else {

iSize = Size;

v = new int[iSize];

}

}

// Отримання розміру вектору

int vector::GetSize(void)

{

return iSize;

}

//Операція доступу до елемента вектора(з перевіркою границь)

int& vector::operator[](int i)

{

if(i<0 || iSize<=i) cout<<"Iндекс виходить за границі"<<endl;

return v[i];

}

//Операція доступу до елемента вектора(без перевірки границь)

int& vector::elem(int i)

{

return v[i];

}

// Додавання нового елементу до вектора

void vector::AddItem(int Item)

{

iSize++;

v[iSize-1] = Item;

cout<<"Додано елемент "<<Item<<endl;

}

// Видалення елемента вектора

void vector::DelItem(int Number)

{

for (int i=0;i<Number;i++) v[i]=v[i];

for (int i=Number+1;i<iSize;i++) v[i-1]=v[i];

iSize=iSize-1;

cout<<"Видалено елемент "<<Number<<endl;

}

// Вставка елемента до вектора

void vector::InsertItem(int Number, int Item)

{

if (Number<0||iSize<Number)

cout<<"Не правильно введена позицiя Розмiр вектора"<<GetSize()<<endl;

else

{

for (int i=0;i<Number;i++) v[i]=v[i];

for (int i=Number+1;i<iSize+1;i++) v[i]=v[i-1];

v[Number]=Item;

iSize=iSize+1;

cout<<"Вставлено елемент - "<<Item<<" на позицiю "<<Number<<endl;

}

}

//Друк вектора

void vector::PrintVector(void)

{

cout<<"Вектор: ";

for (int i=0;i<GetSize();i++) cout<<elem(i)<<" ";

}

//Описання класу матриця

//конструктор класу матриця

//пустий конструктор

matrix::matrix():iWidth(0),iHeight(0)

{

}

//конструктор з параметрами

matrix::matrix(int Width, int Height)

{

iWidth=Width;

iHeight=Height;

m = new vector[iWidth];

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

m[i].SetSize(iHeight);

}

//деструктор

matrix::~matrix(void)

{

delete m;

}

// отримання ширини матриці

int matrix::GetWidth(void)

{

return iWidth;

}

// отримання висоти матриці

int matrix::GetHeight(void)

{

return iHeight;

}

//Задання елемента матриці

void matrix::SetItem(int wIndex, int hIndex, int Item)

{

m[wIndex].SetItem(hIndex,Item);

}

//доступ до елементів матриці

int& matrix::elem(int i,int j)

{

return m[i].elem(j);

}

//друк матриці

void matrix::PrintMatrix(matrix& m)

{

cout<<"Вихiдна матриця: "<<endl;

for (int i=0;i<m.GetWidth();i++)

{

for (int j=0;j<m.GetHeight();j++)

cout<<m.elem(i,j)<<" ";

cout<<endl;

}

}

//множення вектора на матрицю

vector multiply(matrix& m, vector& v)

{

vector r(v.GetSize());

for (int i=0;i<v.GetSize();i++)

{

r.elem(i)=0;

for (int j=0;j<v.GetSize();j++)

r.elem(i)+=m.elem(i,j)*v.elem(j);

}

return r;

}

//сума матриць

matrix& matrix::SumMatrix(matrix & m1, matrix & m2, matrix & res)

{

res.iWidth=m1.GetWidth();

res.iHeight=m1.GetHeight();

if ((m1.GetWidth()==m2.GetWidth())||(m1.GetHeight()==m2.GetHeight()))

{

for (int i=0;i<m1.GetWidth();i++)

for (int j=0;j<m1.GetHeight();j++)

res.elem(i,j) = m1.elem(i,j)+m2.elem(i,j);

}

else

{

cout<<"Не однаковий розмiр матриць"<<endl;

res.iWidth=m1.GetWidth();

res.iHeight=m1.GetHeight();

for (int i=0;i<m1.GetWidth();i++)

for (int j=0;j<m1.GetHeight();j++)

res.elem(i,j) = 0;

}

return res;

}

//множення матриці на число

matrix& matrix::Number2Matrix(matrix & m1, int Number ,matrix & res)

{

res.iWidth=m1.GetWidth();

res.iHeight=m1.GetHeight();

for (int i=0;i<m1.GetWidth();i++)

for (int j=0;j<m1.GetHeight();j++)

res.elem(i,j) = m1.elem(i,j)*Number;

return res;

}

//транспонування матриці

matrix& matrix::Transpon(matrix & m1, matrix & res)

{

res.iWidth=m1.GetHeight();

res.iHeight=m1.GetWidth();

for (int i=0;i<res.iWidth;i++)

for (int j=0;j<res.iHeight;j++)

res.elem(i,j) = m1.elem(j,i);

return res;

}

//множення матриць

matrix& matrix::mmulti(matrix & m1, matrix & m2, matrix & res)

{

res.iWidth=m1.GetWidth();

res.iHeight=m2.GetHeight();

if (m1.GetHeight()==m2.GetWidth())

{

for (int i=0;res.iWidth;i++)

for (int j=0;res.iHeight;j++)

{

res.elem(i,j)=0;

for (int k=0;k<res.iWidth;k++)

res.elem(i,j)+=m1.elem(i,k)*m2.elem(k,j);

}

}

else {

cout<<"Невірний розмір матриць, що множаться";

for (int i=0;res.iWidth;i++)

for (int j=0;res.iHeight;j++) res.elem(i,j)=0;

}

return res;

}

//введення вектора

vector vector::InputVector(vector& v)

{

int item;

for (int i=0;i<v.GetSize();i++)

{ cout<<"Введiть "<<i<<"-ий елемент вектора: ";

cin>>item;

v.SetItem(i,item);

}

return v;

}

int vector::MaxItem(vector &v)

{

int max;

max=v[0];

for (int i=1;i<v.GetSize();i++)

if (v[i]>max) max=v[i];

return max;

}

int vector::MinItem(vector &v)

{

int min;

min=v[0];

for (int i=1;i<v.GetSize();i++)

if (v[i]<min) min=v[i];

return min;

}

//введення матриці

matrix& matrix::InputMatrix(matrix& m)

{

int item;

for (int i=0;i<m.GetWidth();i++)

for (int j=0;j<m.GetHeight();j++)

{

cout<<"Введiть елемент матрицi ("<<i<<","<<j<<")= ";

cin>>item;

m.SetItem(i,j,item);

};

return m;

}

//визначення детермінанта матриці

int matrix::Determinant(matrix &md)

{

int x=0,c,d=1;

x=md.iWidth-1;

for (int k=0;k<x-1;k++)

{

c=md.elem(k,k);

for (int l=0;l<x+1;l++)

md.elem(k,l)=md.elem(k,l)/c;

for (int i=k+1;i<x;i++)

{

c=md.elem(i,k);

for (int j=0;j<x+1;j++)

md.elem(i,j)=md.elem(i,j)-c*md.elem(k,j)/md.elem(k,k);

}

}

c=md.elem(x,x);

for (int l=0;l<x+1;l++)

md.elem(x,l)=md.elem(x,l)/c;

md.PrintMatrix(md);

return d;

}

ДОДАТОК Г

Опис класу форми (діалогу)

// DiplomMFCDlg.h : header file

//

#pragma once

// CDiplomMFCDlg dialog

class CDiplomMFCDlg : public CDialog

{

// Construction

public:

CDiplomMFCDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data

enum { IDD = IDD_DIPLOMMFC_DIALOG };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

// Implementation

protected:

HICON m_hIcon;

// Generated message map functions

virtual BOOL OnInitDialog();

afx_msg void OnSysCommand(UINT nID, LPARAM lParam);

afx_msg void OnPaint();

afx_msg HCURSOR OnQueryDragIcon();

DECLARE_MESSAGE_MAP()

public:

int m_Elem;

int m_IndexElem;

CString m_Size;

CString m_MaxElem;

CString m_MinElem;

CListBox m_Vector;

afx_msg void OnBnClickedButton1();

afx_msg void OnBnClickedButton2();

afx_msg void OnBnClickedButton3();

afx_msg void OnBnClickedButton4();

afx_msg void OnBnClickedButton5();

afx_msg void OnBnClickedButton6();

};

Реалізація класу форми

// DiplomMFCDlg.cpp : implementation file

//

#include "stdafx.h"

#include "DiplomMFC.h"

#include "DiplomMFCDlg.h"

#include "classes.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

vector vect(1);

using namespace std;

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

// Dialog Data

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

// Implementation

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

// CDiplomMFCDlg dialog

CDiplomMFCDlg::CDiplomMFCDlg(CWnd* pParent /*=NULL*/)

:


Сторінки: 1 2 3 4 5 6 7 8 9 10 11 12