回答編集履歴

3

追記

2017/11/25 22:10

投稿

退会済みユーザー
test CHANGED
@@ -22,6 +22,8 @@
22
22
 
23
23
  下記記述とすることで、両方の関数で同じ結果が返るようになるようでした。
24
24
 
25
+ また、d_yearの算出には剰余を使った方がよいかと思いましたのでそのようにしています。
26
+
25
27
 
26
28
 
27
29
  ```c
@@ -38,7 +40,7 @@
38
40
 
39
41
  int u_year = (int)(year / 100);
40
42
 
41
- int d_year = (int)(year - ( u_year * 100));
43
+ int d_year = (int)(year % 100);
42
44
 
43
45
  ```
44
46
 

2

誤字の修正

2017/11/25 22:10

投稿

退会済みユーザー
test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  int day_of_zeller(int year, int month, int day) {
30
30
 
31
- if (month = 1 || month == 2) {
31
+ if (month == 1 || month == 2) {
32
32
 
33
33
  year--;
34
34
 

1

追記

2017/11/25 22:02

投稿

退会済みユーザー
test CHANGED
@@ -10,4 +10,56 @@
10
10
 
11
11
 
12
12
 
13
- nonthは常に1となっています。
13
+ monthは常に1となっています。
14
+
15
+
16
+
17
+ ---
18
+
19
+ 追記:
20
+
21
+
22
+
23
+ 下記記述とすることで、両方の関数で同じ結果が返るようになるようでした。
24
+
25
+
26
+
27
+ ```c
28
+
29
+ int day_of_zeller(int year, int month, int day) {
30
+
31
+ if (month = 1 || month == 2) {
32
+
33
+ year--;
34
+
35
+ month += 12;
36
+
37
+ }
38
+
39
+ int u_year = (int)(year / 100);
40
+
41
+ int d_year = (int)(year - ( u_year * 100));
42
+
43
+ ```
44
+
45
+
46
+
47
+ if文での代入処理はバグの素なので、コンパイラでチェックすることで発見できる可能性があります。
48
+
49
+ たとえばgccですと、下記のように警告オプションをつけることで、今回のような箇所は警告を受けることができます。
50
+
51
+
52
+
53
+ ```text
54
+
55
+ $ gcc -Wall a.c
56
+
57
+ a.c: In function ‘day_of_zeller’:
58
+
59
+ a.c:22:5: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
60
+
61
+ if (month = 1 || month == 2) {
62
+
63
+ ^
64
+
65
+ ```