• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:高校の情報の授業でプログラムを作ることになりました)

高校の情報の授業でプログラムを作ることになりました

kunkun_129の回答

回答No.4

学校の問題なのですね。 どこまで、要求されるのか不明だが。 私が思うには、本当なら、学校の問題だから、 当然、DateSerial(seireki, tsuki, hi) の関数を使うとか、Weekday の関数を 使うとか、その他の日付関数を使う事事態邪道だとおもいます。 四則演算のみで求めるのが理想では?。 しかし、そんなのしても、先生が理解できんかも?。先生も日付関数をつかうのだろね。 本当は間違いなのだけど。 日付関数を一切使わないの方法は?。自分で日付関数に相当するのを作る言です。 それほどステップは必要ありません。 ヒントは、うるう年の計算がきっちりと出来ればOKです。 あと、自分で作る関数は、ある年月日を与えると、 ある基点日(例えば、1989/12/31 windowsはこれを基点日にしている)から何日目かを求める 関数があればいいのです。 function nisuu(in_yyyy,in_mm,in_dd) { dim k_yyyy; dim k_mm; dim k_dd; k_yyyy=1989 k_mm=12 k_dd=31 ここに四則演算のみを入れる nisuu=答え(1989/12/13から何日目) } 上の関数があれば、1989/12/31の曜日が仮に木曜日だとすると、任意の日付の曜日は上の関数で もとめた日数を7で割れば曜日がでます。 上の関数ができれば、 ある年の1月1日の曜日は簡単にもとまりますね。 あとは、第何曜日は、それに7を掛けて、かつ、曜日の補正(スタート曜日に注意) をすれば、その年の1月1日から何日目かわかります。 何日目がわかれば、上で作成したnisuu関数を利用すれば直ぐに何日か求まります。 ただ、この場合上で作成したnisuu関数をそのまま利用できませんね。なぜなら、 その関数は日付をいれて何日目かを求める関数だから。逆の何日目を与えて 日付を求めるのだから、一見不可能な様に思えます。しかし、ここは、ちゃんと 上で作成したnisuu関数のみで求める言ができます。 不思議と思いますね。しかし、この様にある関数の逆の性質の関数は、逆の性質の 関数がなくても、その関数で逆の答えを導き出す事が出来ます。 通常、日常業務では、金利の逆計算時によく用いられます。たとば、あるものを 買えば、頭金幾らで、毎月幾らかは、金利率から簡単に計算できます。 しかし、毎月幾ら払えば、頭金は幾らになるか。この場合、計算式を2つ用意する としても、金利計算には小数点以下端数がつくから、逆の計算式を用いても、 頭金に若干の誤差がでます。この様な誤差も出さない様にしようとおもえば、 計算式は1個でないと駄目になります。故に毎月幾ら払えば、頭金がいくらかは、 頭金が幾らなら、毎月幾らかの計算式のみで求める事になります。 参考までです。

関連するQ&A

  • 九星を求めるプログラム

    こんにちは、いつもお世話になっています 練習で次のようなプログラムを作ったのですがうまく値が帰ってきません。何を入れても、「あなたは九紫火星です」が戻ってきます。どこが間違っているのか教えていただけますと非常に助かります… 九星の計算はここを見てください http://homepage1.nifty.com/luck/newpage41.htm htmlにはフォームがあって、生年月日を入力するようになっています。 誕生日 <INPUT TYPE=radio NAME=nengo VALUE=showa CHECKED>昭和 <INPUT TYPE=radio NAME=nengo VALUE=heisei >平成 <INPUT TYPE=text NAME=nen VALUE="" SIZE=3>年 <INPUT TYPE=text NAME=gatu VALUE="" SIZE=3>月 <INPUT TYPE=text NAME=hi VALUE="" SIZE=3>日 で、aspでは、 NENGO=Request.Form("nengo") NEN=Request.Form("nen") GATU=Request.Form("gatu") HI=Request.Form("hi") HIKAKU1=DateSerial(1985,GATU,HI) HIKAKU2=DateSerial(1985,2,3) If HIKAKU1<=HIKAKU2 Then NEN=NEN-1 End If Kyu1=Mid(NEN,1,1) Kyu2=Mid(NEN,2,1) Kyu=Kyu1+Kyu2 If Kyu>10 Then Kyu=Kyu+1 End If Select Case Kyu Case 1 Response.Write "あなたは一白水星です" Case 2 Response.Write "あなたは二黒土星です" Case 3      (略) Case 8 Response.Write "あなたは八白土星です" Case Else Response.Write "あなたは九紫火星です" End Select      ・      ・      ・     (続きは関係ないので省略) すみませんがよろしくお願いします。

  • Select Caseでorは使えないのでしょうか?

    Sub TEST() 文字 = "あ" Select Case 文字 Case "あ" Or "い" MsgBox "「あ」もしくは「い」です。" End Select End Sub これだとエラーになるのですが ケースが「あ」もしくは「い」の場合は同じ処理をしたい場合はどうすればいいのでしょうか? Sub TEST() 文字 = "あ" Select Case 文字 Case "あ" MsgBox "「あ」もしくは「い」です。" Case "い" MsgBox "「あ」もしくは「い」です。" End Select End Sub このコードをまとめるはどうすればいいのでしょうか? よろしくお願い致します。

  • Tiny Basicのプログラムです。。

    Tiny Basicのプログラムで 試験の成績を入力し、30点未満なら青点、30点以上50点未満なら赤点、50点以上なら合格と表示するプログラムを作成せよ。青点、赤点、合格を判定する部分は副プログラムとして作成せよ。 という問題があったんです。 それで僕は Cls input A Call Q Sub Q END Select Case A=A Case A=<29 print"青点" Case A=>50 print"合格" Case else print"赤点" End Select End sub というプログラムをつくったんですがどんな点数を入れても青点って結果がでてしまうんです。 どうしたらいいんでしょうか?

  • VBAのプログラムについて

    以前、どこかのHPで以下のようなVBAのユーザー関数を見つけました。 最近になって、そのプログラムを見返したのですが、何をしているのかさっぱり覚えていません。 どなたか、教えてください。 そもそも、FEIが何の略なのかまたは何なのかわかりません。 ////////////////////////▼プログラム/////////////////////////////////////////// Function FEI(k As Double, Order As Integer) As Double Dim s As Double Select Case Order Case 1 s = (3969 * k ^ 10) / 65536 + (1225 * k ^ 8) / 16384 + (25 * k ^ 6) / 256 + (9 * k ^ 4) / 64 + k ^ 2 / 4 + 1 Case 2 s = -(441 * k ^ 10) / 65536 - (175 * k ^ 8) / 16384 - (5 * k ^ 6) / 256 - (3 * k ^ 4) / 64 - k ^ 2 / 4 + 1 Case Else End Select FEI = Application.WorksheetFunction.pi * s / 2 End Function /////////////////////////////▲ココまで///////////////////////////////////////////////////////

  • Select Caseで条件が複数の場合

    ifではなくSelect Case で表現するにはどうすればいいでしょうか? Sub Macro1() ひらがな = "い" カタカナ = "イ" Select Case ひらがな Case "あ" Select Case カタカナ Case "ア" MsgBox "ひらがな = ""あ""カタカナ = ""ア""です" End Select End Select Select Case ひらがな Case "い" Select Case カタカナ Case "イ" MsgBox "ひらがな = ""い""カタカナ = ""イ""です" End Select End Select End Sub この場合あ~おまでの条件を設定したい場合どのように書けばいいのでしょうか? またひらがな = "あ"、カタカナ = "イ"の場合はスルーしたいです。 なにか効率のいい方法はありますでしょうか? IFの方が書き方としては正しいのでしょうか? よろしくお願い致します。

  • Tiny Basicのプログラムで。。

    西暦年数を入力し、うるう年かどうかの判定を行うプログラムを作成せよ。 うるう年は400で割り切れる年数または4で割り切れ、かつ100で割り切れない年数です。0(ゼロ)を入力するとプログラムを終了し、0以外を入力したときには判定結果を表示し、そのまま次の入力待ちとなり、連続して判定できるようにしなさい。 っていうのをつくりたくて cls input A Select Case A=A Case A=(A/400) print"うるう年" Case A=(A/4)and(A) っていうとこまで作ったんです>< この次はどうしたら。。 てか、割り切れないっていうのはどうやって表したらいいんですか?

  • エクセルVBAにてプログラムされているシートに別のシートからマクロのモジュールにて貼り付けるとエラーになります。

    エクセルVBAにてプログラムされているシートに別のシートからマクロのモジュールにて普通のデータを貼り付けるとエラーになります。 何卒エラーの解除方法を教えて下さい。 また、合わせて下記プログラムは四角形等のオートシェイプの書式に対応していますが、 同じシート上に写真等の図の書式があるとエラーになります。 お手数ですが、解決方法を教えて下さい。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim C As Variant Dim i As Integer Dim Rng As Range For Each Rng In Target If Not Intersect(Range("e36:i40"), Rng) Is Nothing Then Select Case Rng.Row Case 36 C = Split("3 0 0 0 0") Case 37 C = Split("0 3 0 0 0") Case 38 C = Split("0 0 3 0 0") Case 39 C = Split("0 0 0 3 0") Case 40 C = Split("0 0 0 0 3") End Select Else C = Split("0 0 0 0 0") End If For i = 0 To 4 ActiveSheet.Shapes(i + 1).Select Selection.Font.ColorIndex = C(i) Next i Next Rng Target.Select End Sub

  • Excel VBA ENTERで特定のセルへ移動

    他の質問でみつけたコードですが どなたか以下のコードの内容を説明(翻訳)していただけないでしょうか よろしくお願いします。 '<標準モジュール> Private Sub ReturnDirectrion2SelectCell()  If ActiveCell.Address(0, 0) Like "A2" Then   Range("B5").Select  Else   'Original ReturnDirection の再現   On Error Resume Next   Select Case Application.MoveAfterReturnDirection   Case xlDown     ActiveCell.Offset(1).Select   Case xlToRight     ActiveCell.Offset(, 1).Select   Case xlToLeft     ActiveCell.Offset(, -1).Select   Case xlUp     ActiveCell.Offset(-1).Select   End Select  End If End Sub Sub SetKeys()   '設定用   Application.OnKey "~", "ReturnDirectrion2SelectCell"   Application.OnKey "{Enter}", "ReturnDirectrion2SelectCell" End Sub Sub SetOffKeys()  '解除用  Application.OnKey "~"  Application.OnKey "{Enter}" End Sub '----------------------------------------- 自動設定が必要な場合は、以下のコードを加えてください。 '----------------------------------------- '<標準モジュール> Sub Auto_Open()  Call SetKeys End If Sub Auto_Close()  Call SetOffKeys End If '----------------------------------------- 以上です。よろしくお願いします。

  • エクセル 条件に合わせてマクロを停止させたい

    VBA初心者です。よろしくお願いします。 Sub テスト1() Select Case Cells(ActiveCell.Row, "a").Value Case "○" テスト2 Case "×" ここでマクロを停止させたい End Select End Sub これをループさせているのですが、”a”に”×”がきたときにマクロを停止させる記述方法はありますか?

  • Select Caseのisについて

    Isは変数名ではないですよね? Sub isを使った場合() Dim i As Long i = 2 Select Case i Case Is < 3 Debug.Print "3以下です" Case Else Debug.Print "3以上です" End Select End Sub 例えばこのようなサンプルの時、 Case Is < 3 の時は Case 2 < 3 Case i < 3 と同じ意味ですよね? という事は、is=i=2だと思ったのですが、 Sub 変数を使った場合() Dim i As Long i = 2 Select Case i Case i < 3 Debug.Print "3以下です" Case Else Debug.Print "3以上です" End Select End Sub だと、なぜか3以上ですになってしまいます。 ISの仕組みがよくわからないのですが、 Case Is < 3はCase 2 < 3 なってるわけではないのでしょうか?