public static void main(String[] args) {
int rows, cols, j, i;
Scanner sc = new Scanner(System.in);
System.out.println("enter no of rows and columns respectively");
rows = sc.nextInt();
cols = sc.nextInt();
int[][] matrix = new int[rows+1][cols+1];
System.out.println("enter elements");
for(i = 0; i < rows; i++)
{
for(j = 0; j < cols; j++)
{
matrix[i][j] = sc.nextInt();
}
}
System.out.println("after sum");
int grandtotal = 0;
for(i = 0; i < rows; i++)
{
int rowsum = 0;
int colsum = 0;
for(j = 0; j < cols; j++)
{
rowsum += matrix[i][j];
colsum += matrix[j][i];
}
matrix[i][j] = rowsum;
grandtotal += rowsum;
matrix[j][i] = colsum;
}
j = cols;
matrix[i][j] = grandtotal;
上面的代码工作正常,但我的问题是:使用这个逻辑,如果行数和列数不相同,如何找到矩阵的grandtotal
?并告诉我目前的代码是否有任何缺陷。
答案 0 :(得分:0)
您的代码中没有任何缺陷。现在,当行数和列数不同时,就会出现这种情况。
声明
matrix[j][i] = colsum;
现在会给出不正确的结果,因为现在行数和列数不同。
只需更改声明
即可轻松解决此问题colsum += matrix[j][i];
为:
matrix[rows][j] += matrix[i][j];
现在你不需要声明
matrix[j][i] = colsum;
因此,通过这些简单的修改,不同数量的列和行的代码将是:
for( i = 0;i < rows;i++)
{
int rowsum=0;
for( j = 0;j < cols;j++)
{
rowsum += matrix[i][j];
matrix[rows][j] += matrix[i][j];
}
matrix[i][j] = rowsum;
grandtotal += rowsum;
}
保持其余代码相同。