我有個問題。我需要撰寫程式來檢查每一行是否具有相同的總和,以及每個列是否具有相同的總和。例子:
3 3 3
3 3 3
在此示例中,行的輸出應為“YES”,列的輸出應為“YES”。另一個例子:
4 5 6
6 4 5
在此示例中,行的輸出應為“YES”,因為第一行和第二行的總和相同 (15),列的輸出應為“NO”,因為總和不同 (10,9,11)。
我已經撰寫了檢查第一行和第一列的代碼,而不是比較它們是否與其他列相同。我已經檢查它是否不是,但我不知道如何檢查它,我的意思是如何為這兩種情況輸出“是”。
這是我的代碼:
#include <stdio.h>
int main() {
int mat[100][100];
int n, m;
int i, j;
int sumak = 0;
int sumar = 0;
int sumarp = 0;
int sumakp = 0;
do {
printf("Unesite brojeve M i N: ");
scanf("%d %d", &m, &n);
} while (m < 0 || m > 100 || n < 0 || n > 100);
printf("Unesite clanove matricee: ");
for (i = 0; i < m; i ) {
for (j = 0; j < n; j ) {
scanf("%d", &mat[i][j]);
}
}
// suma of first row
for (i = 0; i < 1; i ) {
for (j = 0; j < n; j ) {
sumarp = sumarp mat[i][j];
}
sumarp = sumarp mat[i][j];
}
// sum of all rows
for (i = 1; i < m; i ) {
for (j = 0; j < n; j ) {
sumar = sumar mat[i][j];
}
if (sumarp != sumar) {
printf("NE");
} else {
sumar = 0;
continue;
}
}
// sum of the first collumn
for (j = 0; j<1; j ) {
for (i = 0; i< m;i ) {
sumakp = sumakp mat[i][j];
}
sumakp = sumakp mat[i][j];
}
// sum of every collumn
for (j = 1; j < n; j ) {
for (i= 0; i < m; i ) {
sumak = sumak mat[i][j];
}
if (sumakp == sumak) {
sumak=0;
continue;
}
if(sumakp!=sumak)
{
printf("NE");
return 0;
}
else{
printf("DA");
}
}
}
因此,如果有人可以解釋我如何做剩下的事情。
謝謝!
uj5u.com熱心網友回復:
使用變數來指示是否有任何行或列不匹配。然后在回圈結束時檢查它。
這是行的方法。列類似,只是切換i和j回圈的順序。
int all_matched = 1;
for (int i = 0; i < m; i ) {
int sumar = 0;
for (int j = 0; j < n; j ) {
sumar = mat[i][j];
}
if (sumar != sumarp) {
all_matched = 0;
break;
}
}
if (all_matched) {
printf("EQ\n");
} else {
printf("NE\n");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/418544.html
標籤:
上一篇:是否可以釋放()或縮短字符陣列?
下一篇:C外部錯誤和1個警告
