- ベストアンサー
こんな問題について
学校の宿題を質問してはいけないとは解っているのですが、1時間考えても回答が出なかったので、ヒントでも頂ければと思いまして伺ってしまいました。 月曜日~日曜日までが、0~6の数値で表されています。(月=0、日=6) 一年は1~366 までのすうちで表されています。(1月1日が1、12月12日が365(又は366)) x = 曜日 y = 現在の日付 z = 未来の日付 として、未来の日付における曜日の数値を求めよ・・・こういう質問です。 式は一つでなくてもかまいませんが、一つにした方が良いと思われます。 一体どういう風に求めればよいのでしょうか・・・絶対値は使ってはいけないのが決まりなんですが。 ヒント下さい、宜しくお願いします。一応、 余りを使うのかな、z - y 余り(%)7 を使用する方法はわかるんですが、それだとマイナスになってしったりして駄目なんです。 プログラムに投稿しようか、数学に投稿しようか迷ったのですが、やはり数学に近いのでこちらに投稿させていただきます。宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>現在の数値を3とし、未来が5、そして曜日は2(水曜日とした場合)12 % 7 = 6, 6 + 2 = 8, で、7 - 8 だと、-1になってしまうのです。 >絶対値を使う事はできません。 >別の条件で、余りが7よりも小さい時もあれば、大きい時もあります。 この計算はこうですよね。 (5-3)%7=2、 (2+2)%7=4 文字を使えば、 [{(z-y)%7}+x]%7 となるとおもいます。 >4+3はゼロ、なので、7(一週間の曜日数)- (4 + 3)をして、答えが0になります。 ここの計算は、本来、 (4+3)%7=0 としなければならなかったと思います。
その他の回答 (3)
- Mr_Holland
- ベストアンサー率56% (890/1576)
>それだとマイナスになってしったりして駄目なんです。 これは、yとzを1~366までの数字で表そうとしているからです。(例えば、現在が12月1日で未来が1月23日のときマイナスになって解けなくなるということを言われているのですよね。) 解決方法は、二通りあります。 1)日付の数値化をエクセルのように年を含めて行う。 2)同じ年の範囲に限定して計算を行う。(つまり、z>yを保証する。)
補足
ああ、私の説明不足の為にお時間をさいていただいてすみません・・・。 いえ、実は現在は常に未来よりも小さな数値と確定されてます。 下の補足にも書きましたが、計算上の問題でマイナスになってしまう事があり、絶対値を使わずにどうやって答えを出すか・・・との事で困っておりました。
- tatsumi01
- ベストアンサー率30% (976/3185)
DeeAnna さんの考えた内容が書いてありますから、問題丸投げにはなりません。安心して下さい。 「未来の日付」ですから、z>y です。したがって、 > z - y 余り(%)7 を使用する方法はわかるんですが、それだとマイナスになって ということはあり得ません。 ただし、入力するときに過去の日付を入力するエラーはあり得るので、z>y をチェックし、そうなっていなかったらエラーメッセージを出して終わりにすればいいでしょう。
お礼
ご回答有難うございます。 ううっ・・・それが、できないんですっ!下の補足にも書きましたが、 条件指定(If statement)を使えないんです。 現在ベーシック状況!エラーメッセージまで行ってません! なのに何故こんな切羽詰った計算問題を出されているのか!? 私にも不明です。 使えるは、and, or それと一般的 + - / * % といったようなものだけです。 説明不足ですみません。
- precog
- ベストアンサー率22% (966/4314)
>余りを使うのかな、z - y 余り(%)7 を使用する方法はわかるんですが、それだとマイナスになってしったりして駄目なんです。 プログラムの話ですかね? マイナスになるっていう意味がわかりせんが? zは未来と決まってるなら、z-yは正の値ですよね?
補足
お早い回答有難うございます、そして私の説明が下手ですみません。 現在の数値を30としまして、未来の数値を62とします。現在は3(木曜日)とします。ここで、私は、(62 - 32) % 7 で、余りが 4 とでました。答えは 0 になってなければならないので、4+3はゼロ、なので、 7(一週間の曜日数)- (4 + 3)をして、答えが0になります。 この問題の場合は良いのですが、 現在の数値を3とし、未来が5、そして曜日は2(水曜日とした場合) 12 % 7 = 6, 6 + 2 = 8, で、7 - 8 だと、-1になってしまうのです。 絶対値を使う事はできません。 別の条件で、余りが7よりも小さい時もあれば、大きい時もあります。 ので、If Statement(条件判別)を使わずにどっちを先に引けばよいのか!!それが解らなくて困っているのです、ハイ。
お礼
か、かか完璧だっ!!!なんて美しい数式!!(感涙) す、すごいです素晴らしいです。なるほど、Modを使えば良かったんですね!有難うございました。なんだかもうやってもらってしまって申し訳ないんですが、とても助かりました。応用、自分でできるようにがんばります!