入力が1,1,3,2,6のときは95
2,1,3,2,6,1,3,4,7なら94
4,1,3,2,6,2,6,3,8,1,8,2,6,2,2,3,6なら82を表示すれば正しいのですが、違った値が表示されます。
プログラムのどこが間違っているのか教えてください。
#include <stdio.h>
// 配列にサイズを定義する。
#define MATRIX_SIZE (10)
void show_data(int state[MATRIX_SIZE][MATRIX_SIZE]) {
int i, j;
printf("------\n");
for (i = 0; i < MATRIX_SIZE; i++ ) {
for (j = 0; j < MATRIX_SIZE; j++) {
printf("%d ", state[i][j]);
}
printf("\n");
}
printf("------\n");
}
void order(int state[][], int n,int c, int s, int e){// nが1ならc列のs行からe行に0を代入し、2ならc行のs列からe列に0を代入する
int i ;
if(n == 1){
for(i = s; i <= e ; i++){
state[i][c] = 0;
}
}
else if(n == 2){
int i;
for(i = s; i <= e ; i++){
state[c][i] = 0;
}
}
}
void execute(int state[][], int a){// aの値の数だけorderを実行する
int i;
int n, c, s, e;
for(i = 1; i <= a; i++){
scanf("%d%d%d%d", &n, &c, &s, &e);
printf("%d %d %d %d \n",n ,c ,s ,e );
order(state , n, c, s, e);
}
}
main(){
int a;
int state[10][10];
int i;
int j;
int sum = 0;
for(i = 0; i < 10; i++ ){
for( j = 0; j < 10; j++){
state[i][j] = 1;
}
}
scanf("%d", &a );
printf("%d\n",a);
execute(state, a);
for(i = 0; i < 10; i++ ){
for( j = 0; j < 10; j++){
sum = sum + state[i][j];
}
}
show_data(state);
printf("%d",sum);
}