我最近接过家庭作业,我原以为自己做得不对,但老师给我留下了我认为是对的东西。
第一个问题:填写以下代码,用于计算方阵A [7] [7]中主要和次要对角线上的值之和。假设矩阵已定义
int sum = 0; // he marked this wrong. Why is initializing to 0 wrong?
for(int i = 0; i < 7; i++) {
for(int j = 0; j < 7; j++) { // also marked j < 7 wrong
sum = sum + A[i][i] + A[i][7-1-i]
}
return sum;
}
问题2:转置方阵A [50] [50],即第一行成为第一列,反之亦然,第二行成为第二列,依此类推。假设定义了矩阵。
void transposeSquare(){
for(int i=0;i<50;i++){
for(int j=0;j<50;j++){ //marked j=0 wrong
int temp = A[i][i];
A[i][j] = A[j][i];
A[j][i] = temp;
}
}
}
为什么transposeSquare中的j = 0不对? 为什么总和不是0? 如果我&lt; 7应该j < 7如果它是一个方阵?
谢谢!
答案 0 :(得分:0)
出于某些原因,你的逻辑是错误的。
通过在外部循环中使用嵌套循环,您将在对角线中添加7次而不是仅一次。
当<html>
<head>
<script>
function updateOnlineStatus() {
document.getElementById("status").innerHTML = "User is online";
}
function updateOfflineStatus() {
document.getElementById("status").innerHTML = "User is offline";
}
window.addEventListener('online', updateOnlineStatus);
window.addEventListener('offline', updateOfflineStatus);
</script>
</head>
<body>
<div id="status">User is online</div>
</body>
</html>
为3时,行
i
相当于:
sum = sum + A[i][i] + A[i][7-1-i]
与:
相同 sum = sum + A[3][3] + A[3][7-1-3]
将 sum = sum + A[3][3] + A[3][3]
两次添加到总和中是不正确的。
要解决问题,请使用:
A[3][3]
您可以使用for(int i = 0; i < 7; i++){
sum = sum + A[i][i] + A[i][7-1-i];
}
sum -= A[3][3]; // Remove the element that was added twice.
来简化代码。
+=
答案 1 :(得分:0)
您的代码存在小错误,这就是您的老师将您的代码视为错误的原因。
第一部分,
int sum = 0;
int size = 7;
for(int i = 0; i < size; i++) {
sum += A[i][j] + A[i][sz-1-i]; // Error: Typo, it should be A[i][j] instead of A[i][i]
}
if(size%2 != 0)
sum -= A[size/2][size/2]; // Missed Case: Subtract the middle element since its repeated only when the size of array is an odd number
return sum; // Return the sum at the end!
对于第二部分您不需要迭代整个二维数组。因为如果你这样做,它会将上三角复制到下三角,而不是计算Transpose
。因此遍历任何三角形(Upper
或Lower
)。
就像我在此代码中遍历Lower Triangle
一样。
void transposeSquare(){
for(int i=0;i<50;i++){
for(int j=0; j<i ;j++){ // Fix 1: Loop j to i-1
int temp = A[i][j]; // Fix 2: Typo it should be A[i][j] instead of A[i][i]
A[i][j] = A[j][i];
A[j][i] = temp;
}
}
}
结帐Triangular Matrix 以获得更好的解释。