質問編集履歴

3

解決したのでコードを更新しました。

2021/07/15 11:45

投稿

schoolstudent
schoolstudent

スコア5

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,5 @@
1
+ //解決しました!!!完成コード載せておきます。みなさん回答ありがとうございました。
2
+
1
3
  今高校生なのですが、アルゴリズム検定に挑戦しようと思い過去問に取り組んでいました。
2
4
 
3
5
  https://atcoder.jp/contests/past202010-open/tasks/past202010_c
@@ -7,6 +9,8 @@
7
9
  自力でプログラミングを行ったところ、出力結果が一致しませんでした。
8
10
 
9
11
  ```c言語
12
+
13
+ // "%c"による文字列スキャン時の改行文字除外機能つき
10
14
 
11
15
  #include<stdio.h>
12
16
 
@@ -26,11 +30,15 @@
26
30
 
27
31
  scanf("%c",&c[i][j]);
28
32
 
33
+ if(c[i][j]=='\n'){
34
+
35
+ j--;
36
+
37
+ }
38
+
29
39
  }
30
40
 
31
41
  }
32
-
33
-
34
42
 
35
43
  for(i=1;i<=tate;i++){
36
44
 
@@ -44,7 +52,7 @@
44
52
 
45
53
  }
46
54
 
47
- if(c[i][j+1]=='#' && j+1!=yoko+1){
55
+ if(c[i][j+1]=='#'&&j+1!=yoko+1){
48
56
 
49
57
  count[i][j]++;
50
58
 
@@ -56,37 +64,37 @@
56
64
 
57
65
  }
58
66
 
59
- if(c[i+1][j]=='#' && i+1!=tate+1){
67
+ if(c[i+1][j]=='#'&&i+1!=tate+1){
60
68
 
61
69
  count[i][j]++;
62
70
 
63
71
  }
64
72
 
65
- if(c[i-1][j]=='#' && i-1!=0){ //ここまでたてよこ
73
+ if(c[i-1][j]=='#'&&i-1!=0){ //ここまでたてよこ
66
74
 
67
75
  count[i][j]++;
68
76
 
69
77
  }
70
78
 
71
- if(c[i-1][j-1]=='#' && i-1!=0 && j-1!=0){
79
+ if(c[i-1][j-1]=='#'&&i-1!=0&&j-1!=0){
72
80
 
73
81
  count[i][j]++;
74
82
 
75
83
  }
76
84
 
77
- if(c[i+1][j-1]=='#'&& i+1!=tate+1 && j-1!=0){
85
+ if(c[i+1][j-1]=='#'&&i+1!=tate+1&&j-1!=0){
78
86
 
79
87
  count[i][j]++;
80
88
 
81
89
  }
82
90
 
83
- if(c[i+1][j+1]=='#'&& i+1!=tate+1 && j+1!=yoko+1){
91
+ if(c[i+1][j+1]=='#'&&i+1!=tate+1&&j+1!=yoko+1){
84
92
 
85
93
  count[i][j]++;
86
94
 
87
95
  }
88
96
 
89
- if(c[i-1][j+1]=='#' && i-1!=0 && j+1!=yoko+1){
97
+ if(c[i-1][j+1]=='#'&&i-1!=0&&j+1!=yoko+1){
90
98
 
91
99
  count[i][j]++; //ここまでななめ
92
100
 

2

if文に条件を加え、範囲外を探索しないようにしました。ですが、結果は変わりませんでした。

2021/07/15 11:45

投稿

schoolstudent
schoolstudent

スコア5

test CHANGED
File without changes
test CHANGED
@@ -30,13 +30,13 @@
30
30
 
31
31
  }
32
32
 
33
-
33
+
34
34
 
35
35
  for(i=1;i<=tate;i++){
36
36
 
37
- printf("\n");
37
+ for(j=1;j<=yoko;j++){
38
38
 
39
- for(j=1;j<=yoko;j++){
39
+ count[i][j]=0;
40
40
 
41
41
  if(c[i][j]=='#'){
42
42
 
@@ -44,7 +44,7 @@
44
44
 
45
45
  }
46
46
 
47
- if(c[i][j+1]=='#'){
47
+ if(c[i][j+1]=='#' && j+1!=yoko+1){
48
48
 
49
49
  count[i][j]++;
50
50
 
@@ -56,37 +56,37 @@
56
56
 
57
57
  }
58
58
 
59
- if(c[i+1][j]=='#'){
59
+ if(c[i+1][j]=='#' && i+1!=tate+1){
60
60
 
61
61
  count[i][j]++;
62
62
 
63
63
  }
64
64
 
65
- if(c[i-1][j]=='#'){ //ここまでたてよこ
65
+ if(c[i-1][j]=='#' && i-1!=0){ //ここまでたてよこ
66
66
 
67
67
  count[i][j]++;
68
68
 
69
69
  }
70
70
 
71
- if(c[i-1][j-1]=='#'){
71
+ if(c[i-1][j-1]=='#' && i-1!=0 && j-1!=0){
72
72
 
73
73
  count[i][j]++;
74
74
 
75
75
  }
76
76
 
77
- if(c[i+1][j-1]=='#'){
77
+ if(c[i+1][j-1]=='#'&& i+1!=tate+1 && j-1!=0){
78
78
 
79
79
  count[i][j]++;
80
80
 
81
81
  }
82
82
 
83
- if(c[i+1][j+1]=='#'){
83
+ if(c[i+1][j+1]=='#'&& i+1!=tate+1 && j+1!=yoko+1){
84
84
 
85
85
  count[i][j]++;
86
86
 
87
87
  }
88
88
 
89
- if(c[i-1][j+1]=='#'){
89
+ if(c[i-1][j+1]=='#' && i-1!=0 && j+1!=yoko+1){
90
90
 
91
91
  count[i][j]++; //ここまでななめ
92
92
 
@@ -95,6 +95,8 @@
95
95
  printf("%d",count[i][j]);
96
96
 
97
97
  }
98
+
99
+ printf("\n");
98
100
 
99
101
  }
100
102
 

1

コードの枠にプログラムを記入しました。

2021/07/15 10:27

投稿

schoolstudent
schoolstudent

スコア5

test CHANGED
File without changes
test CHANGED
@@ -5,6 +5,8 @@
5
5
  ↑こちらの問題について質問です。
6
6
 
7
7
  自力でプログラミングを行ったところ、出力結果が一致しませんでした。
8
+
9
+ ```c言語
8
10
 
9
11
  #include<stdio.h>
10
12
 
@@ -100,6 +102,8 @@
100
102
 
101
103
  }
102
104
 
105
+ ```
106
+
103
107
  これが作成したプログラムとなります。C言語で作成しました。
104
108
 
105
109
  よろしければ、誤りを教えてくださるとうれしいです。