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

ООП-отчет - C++

Восстановить пароль Регистрация
 
Светик@
1 / 1 / 0
Регистрация: 19.10.2009
Сообщений: 87
26.12.2010, 18:02     ООП-отчет #1
помогите написать отчет, очень нужно!!!!!
/*Определить класс "квадратная матрица", операции матричного умножения,
сложения, вычитания, транспонирования,
доступ к элементу матрицы по его индексам, вывод в поток.
*/

#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
#include <assert.h>
#include <stdlib.h>


class sqMatrix {
private:
float** pm; // massiv
int size; // razmernost vectora
void check_range( int );
public:
sqMatrix( int );
sqMatrix( float**, int );
sqMatrix( const sqMatrix& );
friend ostream& operator<< ( ostream&, const sqMatrix& );
sqMatrix operator+ ( const sqMatrix );
sqMatrix operator- ( const sqMatrix );
sqMatrix operator* ( const sqMatrix );
float* operator[] ( const int );
sqMatrix transposition();

~sqMatrix() { delete[] pm; }
};

//проверка индекса
inline void sqMatrix :: check_range( int index ) {
assert( index >= 0 && index < size );
}
// конструктор по умолчанию
// zapolnenie slyachainimi celimi chislami v diapozone [1, 9]
sqMatrix :: sqMatrix( int sz ) {
// check_range( sz );
size = sz;
pm = new float* [size];

for( int i = 0; i < size; i++ ) {
pm[i] = new float [size];
for( int j = 0; j < size; j++ )
pm[i][j] = 1 + rand() % 8;
}
}

sqMatrix :: sqMatrix( float** array, int sz ) {
// check_range( sz );
size = sz;
pm = new float* [size];
for( int i = 0; i < size; i++ ) {
pm[i] = new float [size];
for( int j = 0; j < size; j++ )
pm[i][j] = array[i][j];
}
}

// конструктор копирования
sqMatrix :: sqMatrix( const sqMatrix &m) {
size = m.size;
pm = new float* [size];
for( int i = 0; i < size; i++ ) {
pm[i] = new float [size];
for( int j = 0; j < size; j++ )
pm[i] = m.pm[i];
}
}

// перегрузка "*" : матричное умножение
sqMatrix sqMatrix :: operator* ( const sqMatrix m ) {
sqMatrix c( size );
for( int i = 0; i < size; i++ )
for( int j = 0; j < size; j++ ) {
float res = 0;
for( int k = 0; k < size; k++ ) {
res += pm[i][k] * m.pm[k][j];
c.pm[i][j] = res;
}
}
return c;
}

// перегрузка "+"
sqMatrix sqMatrix :: operator+ ( const sqMatrix m ) {
sqMatrix c( size );
for( int i = 0; i < size; i++ )
for( int j = 0; j < size; j++ )
c.pm[i][j] = pm[i][j] + m.pm[i][j];

return c;
}

// перегрузка "-"
sqMatrix sqMatrix :: operator- ( const sqMatrix m ) {
sqMatrix c(size);
for( int i = 0; i < size; i++ )
for( int j = 0; j < size; j++ )
c.pm[i][j] = pm[i][j] - m.pm[i][j];
return c;
}

float* sqMatrix :: operator[] ( const int index ) {
check_range(index);
return pm[index];
}
sqMatrix sqMatrix :: transposition() {
sqMatrix c(size);
for( int i = 0; i < size; i++ )
for( int j = i; j < size; j++ ) {
c.pm[i][j] = pm[j][i];
c.pm[j][i] = pm[i][j];
}
return c;
}

// отображение векторов: вывод в поток
ostream& operator<< (ostream &os, const sqMatrix &m) {
for( int i = 0; i < m.size; i++ ) {
os << "\t";
for( int j = 0; j < m.size; j++ )
os << setw(3) << m.pm[i][j] << " ";
os << "\n";
}
os << "\n";
return os;
}

int main() {
randomize();
int n = 3;
sqMatrix a(n),b(n);
ofstream& file = ofstream("output.txt");
file << "matr a:" << a
<< "a^T: " << a.transposition()
<< "matr b:" << b
<< "a + b =" << a + b
<< "a - b =" << a - b
<< "a * b =" << a * b
<< "a[2][2] = " << a[2][2]
<< "\n";
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2010, 18:02     ООП-отчет
Посмотрите здесь:

C++ ООП
ООП на С++ C++
C++ ООП
C++ по ООП .
C++ ООП
ооп C++
C++ ООП
C++ ООП

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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