Форум программистов, компьютерный форум CyberForum.ru

Создать программу(проект) на с++, которая выполняет операции над матрицей - C++

Восстановить пароль Регистрация
 
DoktorRaim
1 / 1 / 0
Регистрация: 24.05.2012
Сообщений: 15
24.05.2012, 23:26     Создать программу(проект) на с++, которая выполняет операции над матрицей #1
Нужно создать программу(проект) на с++, которая выполняет операции над матрицей. Создать файлы Matrix.cpp, Matrix.h, main.cpp, test.cpp, test.h

Начал писать программу, но не хватает времени, кто чем поможет, пишите)) нужно к завтрашнему утру 9 - 00

main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cstdlib>
#include <iostream>
#include "CMatrix.h"
 
using namespace std;
 
int main(int argc, char *argv[])
{
       
    CMatrix a, b(3,3), c(3,2);
    system("PAUSE");
    return EXIT_SUCCESS;
}
CMatrix.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#ifndef CMTRX_H
#define CMTRX_H
#include <iostream>
#include <cstdlib>
 
using namespace std; 
 
typedef float float_t;
typedef int sz_t;
 
class CMatrix
{
  public:
 
         CMatrix()
         :m_pElems(0), m_rows(0), m_cols(0)
         {}
         
//         CMatrix(sz_t r,sz_t c, float_t el);
         CMatrix(sz_t r,sz_t c, float_t el=0)
         :m_pElems(new float_t [r*c]), m_rows(r), m_cols(c)
         {init(el);}
         
//         CMatrix(const CMatrix &m);
         CMatrix(const CMatrix &m)
         :m_pElems(new float_t [m.m_cols*m.m_rows]),m_cols(m.m_cols),m_rows(m.m_rows)
         {copy(m);}
         
         /*ГґГіГ*êöèÿ, âîçâðГ*Г№Г*ГѕГ№Г*Гї ýëåìåГ*ГІ Г¬Г*òðèöû ГЇГ® Г*äðåñó (r,c)*/
         float_t operator () (sz_t r, sz_t c)const;
                 
         //float_t &operator() (sz_t r, sz_t c);
         
         CMatrix &operator = (const CMatrix &m);
         
         void resize(sz_t r, sz_t c, float_t el=0.0); 
         
        /* void init(float_t el);      //                        
         void copy(const CMatrix &m);      */
         
         /*äåñòðóêòîð*/
         ~CMatrix()
         {
          delete []m_pElems;
         }
         
  private:
          float_t *m_pElems;          //ГіГЄГ*Г§Г*òåëü Г*Г* ýëåìåГ*ГІГ» Г¬Г*òðèöû
          sz_t m_rows, m_cols;        //
          void init(float_t el);      //                        
          void copy(const CMatrix &m);
};
 
#endif
CMatrix.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include "CMatrix.h"
#include <iostream>
#include <cstdlib>
 
 
using namespace std;
 
 
 
///////////////////////////////////////////////////////////////////////////////
/*CMatrix::CMatrix()
//:m_pElems(NULL), m_rows(0), m_cols(0)
{
 m_pElems=NULL;
 m_rows=0;
 m_cols=0;
}*/
////////////////////////////////////////////////////////////////////////////////
/*CMatrix::CMatrix(sz_t r,sz_t c, float_t el)
:m_pElems(new float_t [r*c]), m_rows(r), m_cols(c)
{
 m_pElems=new float_t[r*c];
 m_rows=r;
 m_cols=c;
 init(el);
}*/
////////////////////////////////////////////////////////////////////////////////
/*CMatrix::CMatrix(const CMatrix &m)
m_pElems(new float_t [m.m_cols*m.m_rows]),m_cols(m.m_cols),m_rows(m,m_rows)
{
 m_pElems=new float_t [m.m_cols*m.m_rows];
 m_cols=m.m_cols;
 m_rows=m.m_rows;
 copy(m);
}*/
///////*/////////////////////////////////////////////////////////////////////////
/*ГґГіГ*êöèÿ, âîçâðГ*Г№Г*ГѕГ№Г*Гї ýëåìåГ*ГІ Г¬Г*òðèöû ГЇГ® Г*äðåñó (r,c)*/
 
float_t CMatrix::operator () (sz_t r, sz_t c)const
{
 if (r>=m_rows||c>=m_cols)
 {
  std::cerr<<"Out of Bounds!";
  exit(1);
 }
 return m_pElems[r*m_cols+c];
}
////////////////////////////////////////////////////////////////////////////////         
/*float_t &CMatrix::operator() (sz_t r, sz_t c)
{
 if (r>=m_rows||c>=m_cols)
 {
  std::cerr<<"Out of Bounds!";
  exit(1);
 }
 return m_pElems[r*m_cols+c];
}*/
////////////////////////////////////////////////////////////////////////////////
void CMatrix::init(float_t el)
{      //b-begin, e-end
 for (float_t *b=m_pElems,*e=b+m_rows*m_cols;b!=e;++b)
 {
  *b=el;
 }
}
////////////////////////////////////////////////////////////////////////////////
void CMatrix::copy(const CMatrix &m)
{
 for(sz_t i=0;i<m_cols*m_rows;++i)
 {
  m_pElems[i]=m.m_pElems[i];
 }
}
////////////////////////////////////////////////////////////////////////////////
CMatrix &CMatrix::operator = (const CMatrix &m)
{
 if (m_pElems!=NULL)
    delete[]m_pElems;
 m_rows=m.m_rows;
 m_cols=m.m_cols;
 m_pElems=new float_t[m_cols*m_rows];
 copy(m);
 return *this;
}
////////////////////////////////////////////////////////////////////////////////
void CMatrix::resize(sz_t r, sz_t c, float_t el)
{
 m_rows=r;
 m_cols=c;
 m_pElems=new float_t[m_cols*m_rows];
 init(el);
}



Так же нужно сделать подгрузку элементов матрицы из файла, ну и вывод тоже в файл 0_0


Добавлено через 21 минуту
Товарищи, мне правда очень нужна ваша помощь.

Добавлено через 8 минут
up up
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2012, 23:26     Создать программу(проект) на с++, которая выполняет операции над матрицей
Посмотрите здесь:

Написать программу, которая вводит с клавиатуры два натуральных числа и выполняет логическое умножение и сложение этих чисел C++
Написать программу которая выполняет функции простого калькулятора C++
C++ Действие над объектом класса выполняет:
C++ Написать программу на с++, которая выполняет операцию над матрицей целых чисел
Связный список (создать и реализовать операции над ним) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
24.05.2012, 23:28     Создать программу(проект) на с++, которая выполняет операции над матрицей #2
Ввод/вывод в файл - это понятно. А какие еще операции то надо? Что должно быть в файле test.h?
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
24.05.2012, 23:33     Создать программу(проект) на с++, которая выполняет операции над матрицей #3
Делал курсовую на втором курсе когда был, вот тебе кусочек оттудова
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Лістинг Matrix.h
#ifndef MATRIX_H
#define MATRIX_H
#include <iostream>
using std::ostream;
using std::istream;
#include "Row.h"//класс-строка матрицы
class Matrix
{
friend ostream &operator<<(ostream&, const Matrix&);
friend istream &operator>>(istream&, Matrix&);
friend Matrix operator*(const Matrix&, const double);
friend const Matrix &operator*=(Matrix&, const double);
friend Matrix operator*(const double,const Matrix &);
public:
    Matrix(int=1,int=1,double=0);
    Matrix(const Matrix&);
    ~Matrix();
    Row &operator[](int);
    const Row &operator[](int) const;
    Matrix operator+(const Matrix&) const;
    const Matrix &operator+=(const Matrix&);
    Matrix operator*(const Matrix&) const;
    const Matrix &operator*=(const Matrix&);
    Matrix operator-(const Matrix&) const;
    const Matrix &operator-=(const Matrix&);
    const Matrix &operator=(const Matrix&);
    Matrix operator/(const Matrix&) const;
    const Matrix &operator/=(const Matrix&);
    friend Matrix operator/(const Matrix&, const double);
    friend const Matrix &operator/=(Matrix&, const double);
    friend Matrix operator/(const double, const Matrix&);
    bool operator==(const Matrix&) const;  bool operator!=(const Matrix&) const;
    double det() const; Matrix inverted() const;
    Matrix transpose() const;
    int rang() const; void swap(Row&,Row&) const;
    void resize(int=1,int=1,double=0);
    private:
    Row *matrix;
    int row; //количество строк
    int column; //количество столбцов
};
#endif
Если хочешь допишу тебе вывод в файл и чтение из файла и купишь её у меня. Решайся только быстрее, ато я спать хочу. Если надумал - пиши здесь в личку или на почту gepar_88@mail.ru. Ещё в скайп можно (и нужно) на gepar88.
DoktorRaim
1 / 1 / 0
Регистрация: 24.05.2012
Сообщений: 15
24.05.2012, 23:34  [ТС]     Создать программу(проект) на с++, которая выполняет операции над матрицей #4
В тесте должна быть проверка функций через константы по типу:
C++
1
2
3
4
5
bool test_umn()
{
     float_t u=2;
     CComplex z(4,4), y(2,2), x(0,16), x1=z*y; 
     return ((x1==x)&&(u*y==z)&&(y*u==z));
P.s оффтоп.
В test.h просто прототипы функций))
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,512
24.05.2012, 23:36     Создать программу(проект) на с++, которая выполняет операции над матрицей #5
Хотя у меня тут вывод в поток есть и чтение из потока ... можно тупо написать функцию для вывода в файл которая будет вызывать метод вывода в поток и вместо потока для экрана подсовывать файловый поток. В общем задача дописывания тривиальная.

Добавлено через 1 минуту
Цитата Сообщение от DoktorRaim Посмотреть сообщение
В тесте должна быть проверка функций через константы по типу:
Какая связь между матрицей и комплексными числами?
Или тебе класс-шаблон матрица нужна чтобы не только int принимала?
DoktorRaim
1 / 1 / 0
Регистрация: 24.05.2012
Сообщений: 15
24.05.2012, 23:40  [ТС]     Создать программу(проект) на с++, которая выполняет операции над матрицей #6
Цитата Сообщение от Gepar Посмотреть сообщение
Цитата Сообщение от DoktorRaim Посмотреть сообщение
В тесте должна быть проверка функций через константы по типу:
Какая связь между матрицей и комплексными числами?
Или тебе класс-шаблон матрица нужна чтобы не только int принимала?
я написал, что оффтоп))
Yandex
Объявления
24.05.2012, 23:40     Создать программу(проект) на с++, которая выполняет операции над матрицей
Ответ Создать тему
Опции темы

Текущее время: 21:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru