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

Описать класс для работы с целочисленной матрицей произвольного размера - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Спецификация файла. WTF? http://www.cyberforum.ru/cpp-beginners/thread424093.html
Здравствуйте. Что такое спецификация файла (в контексте данной задачи)? В Google ничего понятного не нашел. Заранее спасибо.
C++ Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию и, применяя режим прямого доступа, Выв Здравствуйте! Если кто-нибудь мог бы помочь в решении только той части где касается написания функции о поиске самого высокого спортсмена из 10 созданных структур.(if r.rost>r.rost) я просто не знаю как именно. Была бы очень благодарна. Используя функции и режим меню, создать файл из 10 структур, просмотреть файл, добавить в файл новую информацию и, применяя режим прямого доступа, Вывести... http://www.cyberforum.ru/cpp-beginners/thread424087.html
C++ Программирование циклов с параметром. Одномерные массивы
ужас, помогите решить лабораторную, завтра экзамен, а у меня не сделано, я вообще не понимаю как это делать!
C++ Работа с файлами и строками
Доброго времени суток, изучаю С++ по учебнику и практикуму Павловской 2003 г. Столкнулся с проблемой когда делал задачку по поиску подстроки в тексте. Код проги: #include <fstream> #include <string> #include <iostream> using namespace std; int main(){
C++ вопроосы о препроцессорных командах http://www.cyberforum.ru/cpp-beginners/thread424069.html
1) Вопрос о обертке всего содержимого .h файла. Допустим есть файл Shape.h Есть ли разница между: #ifndef SHAPE_GUARD #define SHAPE_GUARD #endif и #ifndef SHAPE_GUARD #define SHAPE_GUARD 1
C++ Создание класса "Фильм" Помогите, пожалуйста!!! Нужно сделать следующее: 1.Построить класс Фильм (со свойствами): название фильма, длительность (кол-во мин), жанр. Реализовать следующие методы класса: подробнее

Показать сообщение отдельно
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
08.01.2012, 10:18     Описать класс для работы с целочисленной матрицей произвольного размера
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
typedef unsigned int UINT;
 
class Matrix
{
public:
    Matrix ( UINT row, UINT col );
    Matrix ( const Matrix &obj );
    ~Matrix ();
 
    void fill ( UINT N );
    void get_size ( UINT &row, UINT &col );
    void print();
    void multiplication ( const Matrix &obj );
 
private:
    int **p;
    /*const */UINT nRow, nColumn;
 
    Matrix& operator = ( const Matrix &obj );
};
 
Matrix::Matrix ( UINT row, UINT col )
: nRow( row > 0 && col > 0 ? row : 0 )
, nColumn( row > 0 && col > 0 ? col : 0 )
{
    if ( nRow == 0 )
    {
        p = NULL;
        return;
    }
 
    p = new int* [nRow];
    *p = new int [nRow*nColumn+1];
    for (UINT i = 1; i < nRow; i++)
        p[i] = p[i-1] + nColumn;
}
 
Matrix::Matrix ( const Matrix &obj )
: nRow( obj.nRow )
, nColumn( obj.nColumn )
{
    if ( nRow == 0 )
    {
        p = NULL;
        return;
    }
 
    p = new int* [nRow];
    *p = new int [nRow*nColumn+1];
    for (UINT i = 1; i < nRow; i++)
    {
        if ( i == 0 )
            p[i] = p[i-1] + nColumn;
 
        for (UINT j = 0; j < nColumn; j++)
            p[i][j] = obj.p[i][j];
    }
}
 
Matrix::~Matrix()
{
    if ( p != NULL )
    {
        delete[] *p;
        delete[] p;
    }
}
 
void Matrix::fill ( UINT N )
{
    srand( time( NULL ) );
 
    for (UINT i = 0; i < nRow; i++)
        for (UINT j = 0; j < nColumn; j++)
            this->p[i][j] = -N + rand() % (2*N);
}
 
void Matrix::get_size ( UINT &row, UINT &col )
{
    row = nRow;
    col = nColumn;
}
 
void Matrix::print()
{
    for (UINT i = 0; i < nRow; i++)
    {
        for (UINT j = 0; j < nColumn; j++)
        {
            cout.width( 5 );
            cout << this->p[i][j];
        }
        cout << endl;
    }
}
 
void Matrix::multiplication ( const Matrix &obj )
{
    if ( this->nColumn != obj.nRow )
    {
        cout << "Different sizes" << endl;
        return;
    }
 
    int **c = new int* [this->nRow];
    *c = new int [this->nRow*obj.nColumn+1];
    for (UINT i = 1; i < this->nRow; i++)
        c[i] = c[i-1] + obj.nColumn;
 
    for (UINT i = 0; i < this->nRow; i++)
        for (UINT j = 0; j < this->nColumn; j++)
        {
            c[i][j] = 0;
            for (UINT k = 0; k < this->nColumn; k++)
                c[i][j] += this->p[i][k] * obj.p[k][j];
        }
 
    delete[] *p;
    delete[] p;
 
    this->p = c;
    *(this->p) = *c;
 
    this->nColumn = obj.nColumn;
}
 
int main()
{
    Matrix A(2, 3), B(3, 2);
    cout << "Matrix A" << endl;
    A.fill(5);
    A.print();
 
    cout << "Matrix B" << endl;
    B.fill(10);
    B.print();
 
    cout << "New matrix A" << endl;
    A.multiplication( B );
    A.print();
    
    return 0;
}
 
Текущее время: 04:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru