表計算の問題
Posted: 2015年8月08日(土) 01:56
AOJの表計算の問題で詰まっています。できるだけ下のソースを使って完成させたいのですが、横の計算がおかしくなってしまいます。(1)の初期化がうまくいかないせいだと思うのですがいまいちわかりません。どなたか分かる方がいらっしゃいましたら教えてくださいm(_ _)m
できるだけ下のコードを大幅に変更などはしたくないです(>_<)
input
4 5
1 1 3 4 5
2 2 2 4 5
3 3 0 1 1
2 3 4 4 6
output
1 1 3 4 5 14 ...(2)
2 2 2 4 5 1801613424 ...(3)
3 3 0 1 1 32775
2 3 4 4 6 19
8 9 9 13 32784 42
(2)の最初は上手く1+1+3+4+5=14とされるのですが次の段(3)からは
2+2+2+4+5=15 とならず1801613424となってしまいます。
できるだけ下のコードを大幅に変更などはしたくないです(>_<)
//表の行数rと列数c、r × c の要素を持つ表を読み込んで、各行と列の合計を挿入した新しい表を出力するプログラムを作成して下さい。
#include <stdio.h>
int main(int argc, const char * argv[]) {
int r=0, c=0, x=0;
int i, j, k, l, m, n;
//input
scanf("%d %d", &r, &c);
int a[r+1][c+1];
/*初期化*/
for (i=0; i<r; i++) {
for (j=0; j<c; j++) {
a[i][j] = 0;
}
}
/*r×c個分の入力*/
for (i=0; i<r; i++) {
for (j=0; j<c; j++) {
scanf("%d", &x);
a[i][j] = x;
}
}
//output
/*r×cの横の足し算*/
for (k=0; k<r; k++) {
for (l=0; l<c; l++) {
printf("%d ", a[k][l]);
a[k][c] = a[k][c] + a[k][l];
}
printf("%d ", a[k][c]);
printf("\n");
a[k][c] = 0; //初期化...(1)
}
/*一番したの縦の足し算*/
for(m=0; m<=c; m++){ // m<=c にする(1行多いから)
for(n=0; n<r; n++){
a[m][c] = a[m][c] + a[n][m];
}
printf("%d ", a[m][c]);
}
return 0;
}
4 5
1 1 3 4 5
2 2 2 4 5
3 3 0 1 1
2 3 4 4 6
output
1 1 3 4 5 14 ...(2)
2 2 2 4 5 1801613424 ...(3)
3 3 0 1 1 32775
2 3 4 4 6 19
8 9 9 13 32784 42
(2)の最初は上手く1+1+3+4+5=14とされるのですが次の段(3)からは
2+2+2+4+5=15 とならず1801613424となってしまいます。