Форум программистов, компьютерный форум, киберфорум
Наши страницы

Возведение матрицы в куб - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Code Blocks. Ошибка при компиляции "неправильный компилятор" http://www.cyberforum.ru/cpp-beginners/thread349822.html
Помогите разобраться. Качал пару версий code block - создаю новый проект, выбираю консоль, с++, пишу код (hello world:)), run and build - на выходе просто НИЧЕГО! Только сообщение, что-то вроде...
C++ Программа для инета на C++ Здравствуйте. Нужно написать программу, которая будет загружать исходный код сайта. Можно ли это сделать в рамках C++? http://www.cyberforum.ru/cpp-beginners/thread349809.html
C++ как сделать от и до
http://i024.***********/1109/b7/0177dc483f6c.jpg есть таблица тут данные,как могу сделать так чтобы когда я вожу значения если при проверки Iобм совподает то оно берят соответсвющию значению что...
Сумматор C++
Можете привести код оптимизированного сумматора?
C++ Требуется совершить обход квадратной матрицы по спирали http://www.cyberforum.ru/cpp-beginners/thread349780.html
помогите с этой задачкой )) Спираль (Время: 1 сек. Память: 16 Мб Сложность: 38%) Требуется совершить обход квадратной матрицы по спирали так, как показано на рисунке справа: заполнение...
C++ Алгоритм построения функции привет, 1. не подскажите где найти алгоритм решения? 2. или готовое решение(исходники) на языках программирования? 3. и как это называется? =))... подробнее

Показать сообщение отдельно
Screenly
2 / 2 / 0
Регистрация: 14.03.2011
Сообщений: 27
14.09.2011, 00:36  [ТС]
Полностью рабочий код. Программа может возводить как в куб, так и в четвертую степень. Если дописать еще одно умножение, то 5. И тд, и тп.

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
#include "stdafx.h"
#include <stdlib.h>
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
class Matrix
{
private:
    int **a; // динамический двумерный массив
    int n; // размерность массива
public:
    Matrix() { n = 0; a = NULL; }; // конструктор по умолчанию
    Matrix(int m) // конструктор
    {
        n=m;
        if (n <= 0) // проверяем размерность массива. если <=0, то выводим ошибку и обнуляем массив. 
        {
            n = 0;
            a = NULL;
            cout << "ОШИБКА! Размерность матрицы < или = 0" << endl;
        } else { // если размерность > 0, то выделяем память
            a = new int * [n];
            for (int i = 0; i < n; i++)
             {
                 a[i] = new int [n];
                 for (int j = 0; j < n; j++)
                     a[i][j] = 0;
            };
        };
    }
    
    void read() // функция чтения. Получает размерность массива (пользователь вводит с клавиатуры) и выделяет память под него.
    {
        cin>>n;
        if (n > 0) {
            a = new int * [n];
            for (int i = 0; i < n; i++)
             {
                 a[i] = new int [n];
                 for (int j = 0; j < n; j++)
                     a[i][j] = 0;
            };
        } else { n = 0; a = NULL; cout << "ОШИБКА! Размерность матрицы < или = 0" << endl; }; // если размерность < или = 0, то выводим ошибку и обнуляем массив
    }
    void random() // функция заполнения массива случайными числами
    {
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                a[i][j]=rand()%10;
    }
    void print() // функция вывода результата на экран
    {
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
                cout<<a[i][j]<<'\t';
            cout << endl;
        };
        
    }
 
    Matrix& operator=(const Matrix &m) // перегрузка оператора присваивания
    {
        n=m.n;
        a=new int * [n];
 
        for (int i = 0; i < n; i++)
        {
            a[i] = new int [n];
            for (int j = 0; j < n; j++)
                a[i][j] = 0;
        };
        
        for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
                a[i][j] = m.a[i][j];
        return *this;
    }
 
    Matrix operator *=(const Matrix& m)
    {
        int **tmp = new int * [n];
        for (int i = 0; i < n; i++)
        {
            tmp[i] = new int [n];
            for (int j = 0; j <n; j++)
                tmp[i][j] = 0;
        };
 
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                for (int k = 0; k < n; k++)
                    tmp[i][j]+=a[i][k]*m.a[k][j];
        a = tmp;
        n = m.n;
        return *this;
    }
 
    Matrix operator * (const Matrix& m)
    {
    Matrix cub(Matrix *m);
    return m * m * m;
    }
 
 
};
 
 
int main ()
{
    setlocale(LC_ALL, "Rus");
    Matrix B;
    cout << "Введите размерность матрицы: ";
    B.read();
    cout << endl;
    cout << "Исходная матрица: " << endl;
    B.random();
    B.print();
    cout << endl;
    B=cub(m);
    cout << "Матрица в 3 степени: " << endl;
    B.print();
    cout << endl;
    cout << "Матрица в 4 степени: " << endl;
    B=cub(m)*m;
    B.print();
    cout << endl;
    system("pause");
}
Добавлено через 1 час 47 минут
Оу. Выложил старую версию, здесь есть бага с return m*m*m; Пожалуйста помогите её выловить, новый файл с решенным багом случайно делитнул ;( (что поделать, мозг закипает, 2 ночи уже. А готовая программа была в 23-20, вот черт меня дернул переделать немного её)
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.