質問するログイン新規登録

回答編集履歴

3

追記

2017/11/25 22:10

投稿

退会済みユーザー
answer CHANGED
@@ -10,6 +10,7 @@
10
10
  追記:
11
11
 
12
12
  下記記述とすることで、両方の関数で同じ結果が返るようになるようでした。
13
+ また、d_yearの算出には剰余を使った方がよいかと思いましたのでそのようにしています。
13
14
 
14
15
  ```c
15
16
  int day_of_zeller(int year, int month, int day) {
@@ -18,7 +19,7 @@
18
19
  month += 12;
19
20
  }
20
21
  int u_year = (int)(year / 100);
21
- int d_year = (int)(year - ( u_year * 100));
22
+ int d_year = (int)(year % 100);
22
23
  ```
23
24
 
24
25
  if文での代入処理はバグの素なので、コンパイラでチェックすることで発見できる可能性があります。

2

誤字の修正

2017/11/25 22:10

投稿

退会済みユーザー
answer CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  ```c
15
15
  int day_of_zeller(int year, int month, int day) {
16
- if (month = 1 || month == 2) {
16
+ if (month == 1 || month == 2) {
17
17
  year--;
18
18
  month += 12;
19
19
  }

1

追記

2017/11/25 22:02

投稿

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