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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2012, 00:52   #1
lexus223
Новичок
Джуниор
 
Регистрация: 28.10.2012
Сообщений: 2
По умолчанию Cложение матриц C++

Даны квадратные матрицы А и В порядка n. Получить матрицу А^2 + В^2

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

void input_matr1(float);          // ввод матрицы 1   
void input_matr2(float);          // ввод матрицы 2
void  sum_matr(float);            // сложение матриц
void  out_matr(float);

const int n=10, m=10;
int matr1[n][m], matr2[n][m];
void input_matr1(float *matr1, int n, int m)
{
	int i,j;
	for(i=0; i<n; i++)
	{
		cout<<"\nvvedite elementy"<<i+1<<"-u stroki matr1: ";
		for (j = 0; j < m; j++)
			cin>>matr1[i*m+j];
	}
}

void input_matr2(float *matr2, int n, int m)
{
	int i,j;
	for(i=0; i<n; i++)
	{
		cout<<"\nvvedite elementy"<<i+1<<"-u stroki matr2: ";
		for (j = 0; j < m; j++)
			cin>>matr2[i*m+j];
	}
}

void  sum_matr(float *matr1, float *matr2, int  n, int m)
{
   int i,j;
   for (i = 0; i < n; i++)
      for (j = 0; j < m; j++)
       matr1[i*m+j]=matr1[i*m+j]*matr1[i*m+j] + matr2[i*m+j]*matr2[i*m+j];
    out_matr(matr1, m, n);
}
void  out_matr(float *matr1, int n, int m)
{
   int i, j;
   for (i = 0; i < n; i++)  
{
       for (j = 0; j < m; j++)
           cout<<matr1[i*m + j]<<"  ";
       cout<<endl;
   }
   cout<<endl;
}
lexus223 вне форума Ответить с цитированием
Старый 31.10.2012, 00:55   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Может, Вы для начала матрицу А^2 получите? И матрицы квадратные, зачем отдельно m и n? И мне одному кажется, что в задаче имеется в виду, что n вводится с клавиатуры? И вообще оно у Вас не должно было скомпилироваться...
Abstraction вне форума Ответить с цитированием
Старый 31.10.2012, 02:07   #3
lexus223
Новичок
Джуниор
 
Регистрация: 28.10.2012
Сообщений: 2
По умолчанию

немного переделанный код
Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>
using namespace std;

void input_matr1(float*, int);          // ввод матрицы 1   
void input_matr2(float*, int);          // ввод матрицы 2
void  sum_matr(float*, float*, int);            // сложение матриц
void  out_matr(float*, int);

int main()
{
int n;
int matr1[10][10], matr2[10][10];
    cout<<"kol-vo elementov matricy? > ";  
	cin>>n;
	input_matr1(matr1,n);
	input_matr2(matr2,n);
	sum_matr(matr1, matr2, n);
	out_matr(matr1, n);
	
}
void input_matr1(float *matr1, int n)
{
	int i,j;
	for(i=0; i<n; i++)
	{
		cout<<"\nvvedite elementy"<<i+1<<"-u stroki matr1: ";
		for (j = 0; j < n; j++)
			cin>>matr1[i*n+j];
	}
}

void input_matr2(float *matr2, int n)
{
	int i,j;
	for(i=0; i<n; i++)
	{
		cout<<"\nvvedite elementy"<<i+1<<"-u stroki matr2: ";
		for (j = 0; j < n; j++)
			cin>>matr2[i*n+j];
	}
}

void  sum_matr(float *matr1, float *matr2, int  n)
{
   int i,j;
   for (i = 0; i < n; i++)
      for (j = 0; j < n; j++)
       matr1[i*n+j]=matr1[i*n+j]*matr1[i*n+j] + matr2[i*n+j]*matr2[i*n+j];
    out_matr(matr1, n, n);
}
void  out_matr(float *matr1, int n)
{
   int i, j;
   for (i = 0; i < n; i++)  
{
       for (j = 0; j < n; j++)
           cout<<matr1[i*n + j]<<"  ";
       cout<<endl;
   }
   cout<<endl;
}
подскажите, а как возвести матрицу в квадрат.

Последний раз редактировалось lexus223; 31.10.2012 в 02:51.
lexus223 вне форума Ответить с цитированием
Старый 31.10.2012, 03:32   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
//обнулить а

for (i = 0; i < n; i++)
    for (j = 0; j < n; j++)
        for (k = 0; k < n; k++)
            a[i,j] += b[i,k] * b[k,j];

//a = b^2
Если не ошибся, то так.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для любых 2 матриц (вводятся) надо найти объединение и пересечение этих матриц (Pascal) novicok Помощь студентам 6 15.09.2011 09:51
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) timepoka Помощь студентам 8 01.07.2011 13:20
умножение матриц Mila Volkova Помощь студентам 3 25.12.2010 14:17
обработ матриц Tiberium Общие вопросы C/C++ 2 23.12.2010 19:31
обработка матриц в с++ прянька Помощь студентам 1 22.11.2009 23:40