如何用函数求和矩阵?
Posted
技术标签:
【中文标题】如何用函数求和矩阵?【英文标题】:How to sum matrix with function? 【发布时间】:2020-12-20 15:44:50 【问题描述】:我想用一个函数对第三行的矩阵求和,但它没有输出任何东西。
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int m = 5, n = 7;
void sumrow ( int *i , int *j )
int sum = 0;
int **a = new int *[m];
for(int j = 0 ; j < n ; j ++)
a[*i] = new int [n];
sum = sum + a[2][*j];
cout << sum << endl;
int main ()
srand (time(NULL));
int sum = 0;
int **a = new int *[m];
for ( int i = 0 ; i < m; i++)
a[i] = new int [n];
for( int j = 0; j < n ; j++)
a[i][j] = rand() % 10;
for( int i = 0; i < m ; i ++)
for(int j = 0 ; j < n ; j ++)
cout << a[i][j] << " ";
cout << endl;
int i , j;
sumrow(&i,&j);
for ( int i = 0; i < m; i ++)
delete [] a[i];
delete [] a;
我的函数 (sumrow) 有问题。如何在第三行输出总和?
【问题讨论】:
在sumrow
函数中,您创建了一个“矩阵”a
,但您永远不会用值填充它。它的内容将是不确定的,使用这些值会导致未定义的行为。我建议您投资some good books 并参加一些课程以正确学习 C++。
【参考方案1】:
我想您正在尝试对在main
中创建的矩阵求和。这样做的方法是将矩阵作为参数从main
传递给sumrow
。不要在sumrow
中创建一个完全不同的矩阵。像这样的
int sumrow(int** a)
int sum = 0;
for (int j = 0; j < n; j++)
sum = sum + a[2][j];
return sum;
int main()
...
cout << sumrow(a) << '\n';
...
【讨论】:
谢谢。刚了解函数所以犯了很多错误。以上是关于如何用函数求和矩阵?的主要内容,如果未能解决你的问题,请参考以下文章
51单片机,用c语言,如何用矩阵键盘为一个变量char a赋值?已设计出一个函数,使得每按一个矩阵