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

Матрица произвольной размерности - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Предупреждение в программе с рекурсивными функциями http://www.cyberforum.ru/cpp-beginners/thread364566.html
Вопрос по институтскому заданию. Задача. Описать рекурсивные функции для определения pi, hi. Задать значение z и вычислить с. p1=cos 1; p2=-sin1; h1=0.5; h2=sin0.5; pi=2p(i-1)-p(i-2); hi=z*h(i-1)+h(i-2); c=p9/h3+p4 Программа #include <iostream.h> #include <math.h> double pFunction (int i); double hFunction (int i, int z);
C++ Переменный член Здраствуйте. В классе обявлен переменный член itsA в привытном методе доступа. Можно ли его с помощью такой функции new*itsA=new int обявленной в конструкторе этого класса сделать указателем на динамическую область памяти??? И что будет при его перезагрузке будет ли он по прежнему динамичным ??? http://www.cyberforum.ru/cpp-beginners/thread364512.html
Решить несколько задач C++
Добавлено через 1 минуту час остался. люди помогите. судьба решается
Вычисление логарифма по основанию C++
Здравствуйте, как в языке си вычисляется логарифм по основанию?
C++ вопросы связанные с темой "читай мат.часть" http://www.cyberforum.ru/cpp-beginners/thread364459.html
Здравствуйте, имется код #define fname argv /* Archive file name */ #define sname argv /* Specimen's name */ int main(int argc, char **argv) { //int argc; //char *argv; //short item_sz ;
C++ Парсинг XML Как его на плюсах лучше сделать? подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9382 / 5432 / 916
Регистрация: 25.07.2009
Сообщений: 10,428
19.10.2011, 17:21     Матрица произвольной размерности
Жуткий быдлокод с потенциальной утечкой памяти и кучей других проблем, но худо-бедно скомпилировалось Borland Turbo C++ 3.0, мало того - отработало. Короче, на "УДачно" потянет
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
#include <iostream.h>
    
class Matrix {
    int ** ptr;
    int rows;
    int columns;
public:
    Matrix() : ptr(0), rows(0), columns(0) {}
    Matrix(int r, int c){
        int i;
        rows = r;
        columns = c;
        ptr = new int* [ rows ];
        for ( i = 0; i < rows; ++i )
            ptr[i] = new int [ columns ];
    }
    Matrix(const Matrix & m){
        *this = m;
    }
    int Rows() const {
        return rows;
    }
    int Columns() const {
        return columns;
    }
    int GetAt(int row, int column) const {
        if ( ptr != NULL && row < rows && column < columns ) 
            return ptr[row][column];
        else {
            cerr << "Wrong indexes for this matrix" << endl;
            return 0;
        }
    }
    void SetAt(int row, int column, int value){
        if ( ptr != NULL && row < rows && column < columns )
            ptr[row][column] = value;
        else
            cerr << "Wrong indexes for this matrix" << endl;
    }
    Matrix & operator = (const Matrix & m){
        if ( this != &m ){
            int i, j;
            
            rows = m.Rows();
            columns = m.Columns();
            ptr = new int* [ rows ];
            for ( i = 0; i < rows; ++i ){
                ptr[i] = new int [ columns ];
                for ( j = 0; j < columns; ++j )
                    ptr[i][j] = m.GetAt(i, j);
            }
        }
        return *this;
    }
    ~Matrix(){
        if ( ptr ){
            int i;
            for ( i = 0; i < rows; ++i )
                delete [] ptr[i];
            delete [] ptr;
            ptr = NULL;
            rows = 0;
            columns = 0;
        }
    }
};
 
int main(){
    int rows, columns, i, j;
    
    cout << "Rows: ";
    cin >> rows;
    cout << "Columns: ";
    cin >> columns;
    
    Matrix m1(rows, columns);
    
    for ( i = 0; i < m1.Rows(); ++i )
        for ( j = 0; j < m1.Columns(); ++j )
            m1.SetAt(i, j, (i + 1) * 10 + (j + 1));
    
    Matrix m2(m1);
    
    cout << "First matrix:" << endl;
    for ( i = 0; i < m1.Rows(); ++i ){
        for ( j = 0; j < m1.Columns(); ++j )
            cout << m1.GetAt(i, j) << " ";
        cout << endl;
    }
    
    cout << "Second matrix:" << endl;
    for ( i = 0; i < m2.Rows(); ++i ){
        for ( j = 0; j < m2.Columns(); ++j )
            cout << m2.GetAt(i, j) << " ";
        cout << endl;
    }
    
    return 0;
}
Матрица произвольной размерности
 
Текущее время: 09:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru