次の問題がわかりません。
月と日を入力すると 4月1日から何日目の日であるかを返す手続きを作成せよ。
ただし
今年の 4月1日から12月31日までが正しく計算できれば よい
>(define (tukihi x y)
(cond ((= (- x 4) 0) y)
((= (- x 4) 1) (+ 30 y))
((= (- x 4) 2) (+ 60 y 1))
((= (- x 4) 3) (+ 90 y 2))
((= (- x 4) 4) (+ 120 y 2))
((= (- x 4) 5) (+ 150 y 3))
((= (- x 4) 6) (+ 180 y 3))
((= (- x 4) 7) (+ 210 y 4))
((= (- x 4) 8) (+ 240 y 4))))
こうしたのですが、一応値は返ってくるのですがこれではだめなようです。
日数計算はコンピュータに任せて式を書けばよいだけと言われたんですが、どうすればいいかわかりません。アドバイスおねがいします
No.2ベストアンサー
- 回答日時:
どこまで shcemeを使えるのか(教わっているのか)がわからないのでちとあれですが、
たとえば4月以降の各月の日数をリストにして持たせます
(30 31 30 31 31 30 31 30 31)
これを元に、各月の1日めの通産日数を「計算」すればとか考えたんですがどうでしょう。
じつはSchemeにはないんですが Common-Lisp には maplist という関数があって
(maplist #'(lambda (x) (apply #'+ x)) '(30 31 30 31 31 30 31 30 31))
→(275 245 214 184 153 122 92 61 31)
のように通産日数のリストを簡単に作れます。
あとは再帰を使って、与えられた月から4月までさかのぼってその月の日数をもらっていく関数を書くとか。
>コンピュータに任せて式を書けばよいだけと言われたんですが
ここをもう少し詳しく訊いてみてはどうでしょう?
No.1
- 回答日時:
たとえば、
> ((= (- x 4) 7) (+ 210 y 4))
> ((= (- x 4) 8) (+ 240 y 4))))
のように、×月のときは30日×月の差+大の月による調整という数字を
あらかじめ計算してプログラムに書くのではなくて、
5月は31日ある、6月は30日だけ、7月は…ということから
計算して日数を求めてしまえということではないですか?
この回答への補足
ん・・・
どんな式にすればいいんでしょう・・
全ての月が30日なら
>(+ (* (- x 4) 30) y)
これでいいですよね?
でも月ごとに日数は違うから、一つずつ書いていくしかないと思ったのですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 簿記検定・漢字検定・秘書検定 簿記2級 表作成時の仕訳の問題 2 2022/07/07 18:15
- 公認会計士・税理士 地代家賃と前払費用の決算整理仕訳 1 2023/02/25 08:14
- 簿記検定・漢字検定・秘書検定 簿記3級 仕訳の問題です。 2 2022/09/23 22:03
- 高校 日商簿記3級の勉強中なのですが 精算表が完成せず困っています。 こちらの問題の回答を教えていただきた 2 2023/03/02 09:07
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- 投資・株式の税金 一般口座で同一銘柄の総平均法のことで 1 2023/02/27 22:08
- 確定申告 個人の確定申告。「医療費のお知らせ」記載内容と医療費控除の明細書【内訳書】に記入する内容の関係 4 2023/03/04 18:41
- Excel(エクセル) 数式→数値固定する方法ありますか? 5 2023/06/18 15:22
- Excel(エクセル) 現時点の年齢を算出して、その年齢と一致したセルを色付けしたい。 4 2022/06/23 17:49
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAで一時的にオーバーフローを...
-
変化させるセルが変化しない
-
再帰呼び出しの計算量
-
EXCELなどで「返す」という表現
-
VBでReplace
-
エクセル以外で麻雀の成績を管...
-
Delphiでバッチ処理を直ぐに書...
-
数値計算の高速化 (cos, sin, exp)
-
スレッド処理からダイアログを...
-
schemeです
-
2つの住所から直線距離を計算...
-
スライムがつぶれていく様子を...
-
prolog計算
-
for文である数の倍数になるまで...
-
Visual C++でdebugとreleaseで...
-
連立一次方程式を解くプログラム
-
プログラムの発散
-
fortranのプログラムについて
-
骨折リスク評価のFRAXについて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
変化させるセルが変化しない
-
排他的論理和 BCC(水平パリテ...
-
VBAの再計算が反映されない件に...
-
VBAで関数をつくる
-
モジュラス103の計算とは何でし...
-
バッチファイルでウインドウを...
-
EXCELなどで「返す」という表現
-
数値計算の高速化 (cos, sin, exp)
-
傾いた四角形内の範囲の条件式
-
骨折リスク評価のFRAXについて...
-
Excel VBAにてFFT
-
matlab計算での進捗状況を知りたい
-
C言語についてです。 再帰を使...
-
C言語について 下の画像は do-w...
-
アドオン利率を実質年率に変換
-
エクセルで特定のセルのみを任...
-
電卓でmodの計算
-
y=(x^2 +3x+1)^4を微分の定義を...
-
「評価」「評価値」という言葉...
おすすめ情報