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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ ifstream ofstream http://www.cyberforum.ru/cpp-beginners/thread975773.html
как работают данные файловые операции, объясните пожалуйста куда происходит запись ена жёстком диске
C++ Движение окружности по диагонали туда и обратно Вот написал функцию. Что не правильно в алгоритме? void move () { int shag=1; if (x<getmaxx()-r && y<getmaxy()-r) { x+=shag; y+=shag; } else http://www.cyberforum.ru/cpp-beginners/thread975771.html
Статический массив двухмерных динамических массивов C++
Необходимо создать статический массив двухмерных динамических массивов (матриц). Т.е. чтобы была некая стопка матриц, одна под другой. Очень важно, чтобы созданные матрицы были все инициализированы нулями. Вот как делаю я: #define N 10 float**Array; // N - число матриц int m = 5; // кол-во строк в каждой матрице int n = 9; // кол-во столбцов в каждой матрице int k, i; for (k = 0; k <...
Проблемы с курсаком C++
В общем задача такая, написать программу которая переводит слова в цифры! Например: один = 1, два = 2, пять тысяч семьсот пятнадцать = 5715. Написал бы сам, но я даже представления не имею как это сделать, наоборот я уже сделал(скопипастил ;D), а этого нигде нет. Буду благодарен всем кто поможет=)
C++ Реализация разбиения числа с Динам. Прогр http://www.cyberforum.ru/cpp-beginners/thread975701.html
Доброго времени суток. Нужна помощь: как с помощью динамического программирования реализовать решение такой вот задачи: "найти количество разбиений числа на не повторяющиеся слагаемые". То есть, для числа 3 ответом будет 2: - 1 + 2 - 3 Буду благодарен за полностью рабочую программу, потому как пытаюсь разобраться с ДП, а без примеров не могу. В рунете же мало статей на эту тему. Заранее...
C++ Написать программу, которая предлагает пользователю ввести число и выводит в консоль все числа, на которые введенное делится без остатка Написать программу, которая предлагает пользователю ввести число и выводит в консоль все числа, на которые введенное делится без остатка. использовать только for подробнее

Показать сообщение отдельно
proech
10 / 10 / 2
Регистрация: 10.07.2013
Сообщений: 150
12.10.2013, 22:24     неправильно возводит в степень матрицу с++
неправильно возводит в степень матрицу
не знаю может алгоритм неверный)
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
#include "stdafx.h"
#include <iostream>
#include <locale.h>
 
class Matrix
{protected:
  float **InitMatrix;
   int ISizeOfMatrix;
   int JSizeOfMatrix;
public:
    friend std::istream &operator>>(std::istream &Stream,Matrix &a)
    {
        for (int NumberI = 0;NumberI<a.ISizeOfMatrix;NumberI++){
            for (int NumberJ = 0;NumberJ<a.JSizeOfMatrix;NumberJ++){
                std::cout<<"["<<NumberI<<"]"<<"["<<NumberJ<<"] = ";
              Stream>>a.InitMatrix[NumberI][NumberJ];
              }
            
 
        }
            std::cout<<"______________________________"<<std::endl;
        return Stream;
    
    }
     friend std::ostream &operator<<(std::ostream &Stream,Matrix &a)
    {
        for (int NumberI = 0;NumberI<a.ISizeOfMatrix;NumberI++)
        {
            for (int NumberJ = 0;NumberJ<a.JSizeOfMatrix;NumberJ++)
            {
                std::cout<<"["<<NumberI<<"]"<<"["<<NumberJ<<"] = ";
                Stream<<a.InitMatrix[NumberI][NumberJ];
            }
            Stream<<std::endl;
        
        }
Stream<<"______________________________"<<std::endl;
        return Stream;
    }
     Matrix(int SizeI ,int  SizeJ)
{       ISizeOfMatrix = SizeI;
        JSizeOfMatrix = SizeJ;
           InitMatrix = new float*[ISizeOfMatrix];
        for (int Number = 0;Number<ISizeOfMatrix;Number++)
        {
            InitMatrix[Number] = new float[JSizeOfMatrix];
        }
           
    
        
     }
     ~Matrix(){ delete[] this->InitMatrix;}
     
    Matrix& operator+(Matrix &Element)
    { 
        Matrix Result(this->ISizeOfMatrix,this->JSizeOfMatrix);
         if((this->ISizeOfMatrix != Element.ISizeOfMatrix) ||(this->JSizeOfMatrix != Element.JSizeOfMatrix)){
             std::cout << "Different sizes" << std::endl;
             return *this;}else {
       
         for (int NumberI = 0;NumberI<this->ISizeOfMatrix; NumberI++){
             for (int NumberJ = 0;NumberJ<this->JSizeOfMatrix;NumberJ++){
                Result.InitMatrix[NumberI][NumberJ] = this->InitMatrix[NumberI][NumberJ]+ Element.InitMatrix[NumberI][NumberJ];
             }
         }
         return Result;}
     
     }
    Matrix & operator()(int Degree)
    {float D;
    
        for (int NumberK = 0;NumberK<Degree-1;NumberK++)
        {
            for (int NumberI = 0;NumberI<this->ISizeOfMatrix;NumberI++)
            {D = 0;
            for (int NumberJ = 0;NumberJ<this->JSizeOfMatrix;NumberJ++)
            {
               D += this->InitMatrix[NumberI][NumberJ] * this->InitMatrix[NumberJ][NumberI];
            this->InitMatrix[NumberI][NumberJ] = D;
}} }
        
        return*this;
    }
    //приравнивание
    Matrix& operator=(Matrix &Element)
    {
        for (int NumberI = 0;NumberI<this->ISizeOfMatrix;NumberI++){
        
            for (int NumberJ = 0;NumberJ<this->JSizeOfMatrix;NumberJ++)
            {
            this->InitMatrix[NumberI][NumberJ] = Element.InitMatrix[NumberI][NumberJ];
            }}
            
        return *this;}
    //обращение по индексу
    float &operator()(int SizeI,int SizeJ)
    {
     return this->InitMatrix[SizeI][SizeJ];
    }
    
 
 
};
 
int main(int argCount, char** arguments)
{
    setlocale(2,"rus");
    Matrix a(3,2);
    std::cout<<"матрица A"<<std::endl;
    std::cin>>a;
    std::cout<<a;
    Matrix b(2,3);
    std::cout<<"Матрица В"<<std::endl;
    std::cin>>b;
 std::cout<<a(1,0)<<std::endl;
 std::cout<<"a(1,0)+b(1,0) ="; 
 float q = a(1,0)+b(1,0);
 std::cout<<q<<std::endl;
 std::cout<<a+b;
 
 std::cout<<a(2);
 
   system("pause");
    return 0;
}
Добавлено через 6 минут
Цитата Сообщение от proech Посмотреть сообщение
неправильно возводит в степень матрицу
не знаю может алгоритм неверный)
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
#include "stdafx.h"
#include <iostream>
#include <locale.h>
 
class Matrix
{protected:
  float **InitMatrix;
   int ISizeOfMatrix;
   int JSizeOfMatrix;
public:
    friend std::istream &operator>>(std::istream &Stream,Matrix &a)
    {
        for (int NumberI = 0;NumberI<a.ISizeOfMatrix;NumberI++){
            for (int NumberJ = 0;NumberJ<a.JSizeOfMatrix;NumberJ++){
                std::cout<<"["<<NumberI<<"]"<<"["<<NumberJ<<"] = ";
              Stream>>a.InitMatrix[NumberI][NumberJ];
              }
            
 
        }
            std::cout<<"______________________________"<<std::endl;
        return Stream;
    
    }
     friend std::ostream &operator<<(std::ostream &Stream,Matrix &a)
    {
        for (int NumberI = 0;NumberI<a.ISizeOfMatrix;NumberI++)
        {
            for (int NumberJ = 0;NumberJ<a.JSizeOfMatrix;NumberJ++)
            {
                std::cout<<"["<<NumberI<<"]"<<"["<<NumberJ<<"] = ";
                Stream<<a.InitMatrix[NumberI][NumberJ];
            }
            Stream<<std::endl;
        
        }
Stream<<"______________________________"<<std::endl;
        return Stream;
    }
     Matrix(int SizeI ,int  SizeJ)
{       ISizeOfMatrix = SizeI;
        JSizeOfMatrix = SizeJ;
           InitMatrix = new float*[ISizeOfMatrix];
        for (int Number = 0;Number<ISizeOfMatrix;Number++)
        {
            InitMatrix[Number] = new float[JSizeOfMatrix];
        }
           
    
        
     }
     ~Matrix(){ delete[] this->InitMatrix;}
     
    Matrix& operator+(Matrix &Element)
    { 
        Matrix Result(this->ISizeOfMatrix,this->JSizeOfMatrix);
         if((this->ISizeOfMatrix != Element.ISizeOfMatrix) ||(this->JSizeOfMatrix != Element.JSizeOfMatrix)){
             std::cout << "Different sizes" << std::endl;
             return *this;}else {
       
         for (int NumberI = 0;NumberI<this->ISizeOfMatrix; NumberI++){
             for (int NumberJ = 0;NumberJ<this->JSizeOfMatrix;NumberJ++){
                Result.InitMatrix[NumberI][NumberJ] = this->InitMatrix[NumberI][NumberJ]+ Element.InitMatrix[NumberI][NumberJ];
             }
         }
         return Result;}
     
     }
//
//возведение в степень
//
    Matrix & operator()(int Degree)
    {float D;
    
        for (int NumberK = 0;NumberK<Degree-1;NumberK++)
        {
            for (int NumberI = 0;NumberI<this->ISizeOfMatrix;NumberI++)
            {D = 0;
            for (int NumberJ = 0;NumberJ<this->JSizeOfMatrix;NumberJ++)
            {
               D += this->InitMatrix[NumberI][NumberJ] * this->InitMatrix[NumberJ][NumberI];
            this->InitMatrix[NumberI][NumberJ] = D;
}} }
        
        return*this;
    }
    //приравнивание
    Matrix& operator=(Matrix &Element)
    {
        for (int NumberI = 0;NumberI<this->ISizeOfMatrix;NumberI++){
        
            for (int NumberJ = 0;NumberJ<this->JSizeOfMatrix;NumberJ++)
            {
            this->InitMatrix[NumberI][NumberJ] = Element.InitMatrix[NumberI][NumberJ];
            }}
            
        return *this;}
    //обращение по индексу
    float &operator()(int SizeI,int SizeJ)
    {
     return this->InitMatrix[SizeI][SizeJ];
    }
    
 
 
};
 
int main(int argCount, char** arguments)
{
    setlocale(2,"rus");
    Matrix a(3,2);
    std::cout<<"матрица A"<<std::endl;
    std::cin>>a;
    std::cout<<a;
    Matrix b(2,3);
    std::cout<<"Матрица В"<<std::endl;
    std::cin>>b;
 std::cout<<a(1,0)<<std::endl;
 std::cout<<"a(1,0)+b(1,0) ="; 
 float q = a(1,0)+b(1,0);
 std::cout<<q<<std::endl;
 std::cout<<a+b;
 
 std::cout<<a(2);
 
   system("pause");
    return 0;
}
как вообще возводить в степень матрицу?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru