Member 13793647 Ответов: 2

Как это сделать программирование


Для вычисления матричных операций

Дан код для сложения и умножения 2 матриц в основной функции
1. Запустить код
2. Позвонить назначить функцию для инициализации матрицы случайными целыми числами [-3, 3]
3. Вызов функции дисплея матрица
4. Позвонить назначить функцию для инициализации матрицы B, так как случайные целые числа [-4, 4]
5. Вызов функции дисплея матрицы B
6. вычислите матрицу C=A+B в функции сложения матриц
7. Дисплей матричный с функцией дисплея
8. В функции main: назначение и отображение матрицы D(Я, J) = Я-J;
9. вычислите матрицу E = CD в матричной функции умножения
10. отображение матрицы E в функции отображения

Что я уже пробовал:

#include<iostream>
#include<time.h>
using namespace std;
#define m 4
#define n 5
#define p 6
/*To operate on an array of 2D matrix
/*To display indexes of a 2D matrix*/
/*To introduce a random number generator */

void main()
{	/*To declare and initialize an array A*/
	int A[m][n], B[m][n], C[m][n], D[n][p], E[m][p];

	clock_t wait;
		/*To assign matrix A as random integers [-3, 3] */
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
			A[i][j] = (rand() % 5) - 3;
	}
	/*To display an array of matrix A*/
	cout << "matrix A \n";
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << A[i][j] << "\t";
			wait = clock();
			while (clock() < wait + 200);
		}	cout << "\n";
	}cout << "\n";

	/*To assign matrix B as random intergers [-4,4] */
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
			B[i][j] = (rand()%5)-4;
	}
	/*To display an array of matrix B*/
	cout << "matrix B \n"; 
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << B[i][j] << "\t";
			wait = clock();
			while (clock() < wait + 200);
		}	cout << "\n";
	}cout << "\n";


	/*To compute matrix addition C = A+B,
	C(i,j) = dotproduct(row i of A,column j of B) */
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			C[i][j] = A[i][j] + B[i][j];
		}
	}
	/*To display an array of matrix C*/
	cout << "matrix C \n"; 
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cout << C[i][j] << "\t";
			wait = clock();
			while (clock() < wait + 200);
		}	cout << "\n";
	}cout << "\n";

	/*To assign matrix D(i,j)=i-j using for loop*/
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < p; j++)
			D[i][j] = i - j;
	}
	/*To display an array of matrix D*/
	cout << "matrix D \n"; 
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < p; j++)
		{
			cout << D[i][j] << "\t";
			wait = clock();
			while (clock() < wait + 200);
		}	cout << "\n";
	}cout << "\n";

	/*To compute matrix multiplication E = CD,
	E(i,j) = dotproduct(row i of C,column j of D) */
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < p; j++)
		{
			E[i][j] = 0;
			for (int k = 0; k < n; k++)
				E[i][j] = E[i][j] + A[i][k] * D[k][j];
		}
	}
	/*To display an array of matrix E*/
	cout << "matrix E \n"; 
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < p; j++)
		{
			cout << E[i][j] << "\t";
			wait = clock();
			while (clock() < wait + 200);
		}	cout << "\n";
	}cout << "\n";
	system("PAUSE");
}

Rick York

Ваше сообщение было немного изменено. Так в чем же заключается ваш вопрос? Если это "сделаешь ли ты за меня домашнее задание?", то ответ будет отрицательным. Если это "почему моя программа не работает?", ответ заключается в том, чтобы запустить отладчик и выяснить это самостоятельно.

2 Ответов

Рейтинг:
1

OriginalGriff

"То, что я пробовал" предназначено для того, чтобы вы объяснили, что вы на самом деле сделали, а не "попробуйте найти сайт, чтобы сделать мою домашнюю работу за меня".

Мы не делаем домашнее задание: оно задано не просто так. Она существует для того, чтобы вы думали о том, что вам сказали, и пытались понять это. Он также существует для того, чтобы ваш наставник мог определить области, в которых вы слабы, и сосредоточить больше внимания на корректирующих действиях.

Попробуйте сами, возможно, вы обнаружите, что это не так сложно, как вы думаете!

Если вы столкнетесь с конкретной проблемой, то, пожалуйста, спросите об этом, и мы сделаем все возможное, чтобы помочь. Но мы не собираемся делать все это для вас!


CHill60

OP теперь опубликовал код, который они пробовали, так что это решение выглядит немного суровым :-D

OriginalGriff

Взгляните еще раз на код - это тот код, о котором в вопросе говорится как о "заданном коде для сложения и умножения 2 матриц в основной функции", я думаю, - там нет функций назначения или отображения.

CHill60

В таком случае я забираю свой жесткий бит :-)

Рейтинг:
1

KarstenK

У вас есть очень четкий список задач, что делать. Как и ваша задача 2.

int A[m][n], B[m][n], C[m][n], D[n][p], E[m][p];// must be global for now
void AssignMatrix3();// above and outside main (prototype)

после основной реализации
void AssignMatrix3()
{
  //your init of the matrix
}
Если вам нужны еще какие-то знания, то погрузитесь в Изучайте C++ руководство.
Совет: сделайте некоторые выходные данные и используйте одноступенчатый режим отладчика.