Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2015, 22:42   #1
tmr_3112
Новичок
Джуниор
 
Регистрация: 16.11.2015
Сообщений: 1
По умолчанию С++ возведение матриц в степень с использованием функции перемножения двух матриц

программа работает не правильно. функция возводит только во 2 степень. в чем проблема? кто может помочь?


Код:
#include <stdafx.h>
#include <stdio.h>
#include <iostream>
using namespace std;

void f(int** x, int n,int** y, int** z)
{
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++)
        {
            z[i][j]=0;
			for (int k = 0; k < n; k++)
                z[i][j] += x[i][k] * y[k][j];
            }
 }
 
int main()
{
setlocale(0,"");
int n=3;
int i,j,k;
int **a = new int* [n];
    for (i = 0; i < n; i++)
    {
        a[i] = new int [n];
    }
cout <<"Введите матрицу:"<< endl;
for (i = 0; i< n; i++)
   for (j = 0; j < n; j++)
	   cin>>a[i][j];
int **b = new int* [n];
    for (i = 0; i < n; i++)
    {
        b[i] = new int [n];
    }
for (i = 0; i< n; i++)
   for (j = 0; j < n; j++)
	   b[i][j]=a[i][j];
int **c = new int* [n];
    for (i = 0; i < n; i++)
    {
        c[i] = new int [n];
    }
int l=2;
cout<<"Введите положительную степень матрицы больше 1:"<<endl;
int t;
cin>>t;
while(l<t)
{
	
	for (i=0;i<n;i++)
	  for (j=0;j<n;j++)
	  {
		  c[i][j]=a[i][j];
	  }
	f(a, n, b, c);
	l++;
}
for (i=0;i<n;i++)
{
	for (j=0;j<n;j++)
		cout<<c[i][j]<<" ";
	cout<<endl;
}


 system ("pause");
	return 0;
}

Последний раз редактировалось Stilet; 22.11.2015 в 22:50.
tmr_3112 вне форума Ответить с цитированием
Старый 22.11.2015, 23:08   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
while (t > 1)
{
    f(a, n, b, c);
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
            b[i][j] = c[i][j];
    --t;
}
А так?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 22.11.2015 в 23:11.
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить процедуру перемножения матриц и умножения матрицы на вектор kolychii Помощь студентам 0 25.01.2013 03:42
Процедура перемножения матриц в Delphi rob7777 Помощь студентам 7 16.12.2012 21:20
Подпрограмма перемножения матриц (3 матрицы) Doublefaced Помощь студентам 8 01.07.2009 23:15
Подпрограмма перемножения матриц Doublefaced Помощь студентам 0 22.06.2009 11:26