Форум программистов, компьютерный форум 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
13.10.2013, 21:34  [ТС]     неправильно возводит в степень матрицу с++
снова не правильно выводит)
допустим
если матрица вся из единиц то при возведении в квадрат
она должна состоять вся из троек
но не состоит
есть способ что можно возводить
через exp(n*ln(a[i][j])) но я не знаю что такое n

Добавлено через 4 часа 58 минут
добился того что делает правильно первую строку
если матрица полностью состоит из единиц
но дальше что-то не получается)
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
// ConsoleApplication68.cpp: определяет точку входа для консольного приложения.
//
 
 
#include "stdafx.h"
#include <iostream>
#include <locale.h>
#include <math.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()
                                  { 
                                      for (int  i = 0;i<ISizeOfMatrix;i++){
                                      delete[] this->InitMatrix[i];
                                      }
                                  }
     /*+*/                                  Matrix& operator+(Matrix &Element)
    { 
        std::cout<<"сложение"<<std::endl;
        
         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++){
                this->InitMatrix[NumberI][NumberJ] += Element.InitMatrix[NumberI][NumberJ];
             }
         }
         return *this;
             }
     
     }
/*возведение в степень*/                       Matrix & operator()(int Degree)
    {  std::cout<<"возведение в степень"<<std::endl;
    if (this->ISizeOfMatrix !=this->JSizeOfMatrix){ std::cout<<"матрица не квадратная"<<std::endl;return *this;}
    else
    {  int I,J,K; float e  = 0.0;
        //for (int CurrDegr = 0;CurrDegr<Degree;CurrDegr++){
        for ( I = 0;I<ISizeOfMatrix;I++)
        {e = 0.0;
            for ( J = 0;J<ISizeOfMatrix;J++){
            e = 0.0;
        for ( K= 0;K<ISizeOfMatrix;K++)
             e += InitMatrix[J][K]*InitMatrix[K][J];
 
               
        
        
    
        InitMatrix[I][J] = e;
            }
        
        
        
        }
                                     return *this;
    }
        }
    /*приравнивание*/                       Matrix& operator=(Matrix &Element)
    {
        for (int NumberI = 0;NumberI<this->ISizeOfMatrix;NumberI++){
        for (int NumberJ = 0;NumberJ<this->JSizeOfMatrix;NumberJ++)
    {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,3);
    std::cout<<"матрица A"<<std::endl;
    std::cin>>a;
    std::cout<<a;
    Matrix b(3,3);
    std::cout<<"Матрица В"<<std::endl;
    std::cin>>b;
    std::cout<<"a(1,0)+b(1,0) ="; 
    float q = a(1,0)+b(1,0);  std::cout<<q<<std::endl;
    a(2);
    std::cout<<a;
    std::cout<<a+b;
 
   system("pause");
    return 0;
}
 
Текущее время: 01:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru