Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

программа работает не правильно. функция возводит только во 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 в 23:50.
tmr_3112 вне форума   Ответить с цитированием
Старый 23.11.2015, 00:08   #2
BDA
Модератор
Заслуженный модератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Адрес: RF Moscow
Сообщений: 5,413
Репутация: 2502

icq: 438888048
По умолчанию

Код:
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; 23.11.2015 в 00:11.
BDA вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить процедуру перемножения матриц и умножения матрицы на вектор 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


12:07.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.