• ベストアンサー

プログラミングの問題でちょっと・・・。

大学の授業でこういう問題がありました。。 『ある年が閏年であれば366を、閏年でなければ365を表示する       4の倍数ではないか、または100の倍数であれば 平年    4の倍数で、かつ100の倍数でなければ     閏年    ただし、400の倍数であれば          閏年』 どういう風に作ればいいのか教えてください! お願いします!  

質問者が選んだベストアンサー

  • ベストアンサー
  • zerosix
  • ベストアンサー率31% (47/149)
回答No.1

年号に対して、2/29を付け加えて、それが日付として存在するか isdate関数で調べればうるう年として存在するか分かります。 Private Sub Command1_Click() Dim strDate As String strDate = Text1.Text + "/2/29" If IsDate(strDate) = True Then MsgBox "うるう年" Else MsgBox "うるう年じゃない" End If End Sub しかし、ここはレポートの回答を求める場所ではないですよ。

tamatamaneginegi
質問者

お礼

ありがとうございました! 確かにここはレポートの回答を求める場所じゃあないですね・・・。 これからは気をつけます。。。 本当にありがとうございました!

関連するQ&A

  • 表計算のifの条件(うるう年の計算)

    LibreOfficeの表計算のifの条件で わからない点があります。 問題は 【A1からA10まで1600から100とばしに2600まで入ってます。  そして、それぞれうるう年であるか平年であるかを調べます。  条件は、  西暦の年数が4で割り切れ数字は原則『うるう年』  例外として、西暦が100で割り切れる年は『平年』とする  さらに例外として西暦が400で割り切れる年は『うるう年』とする】 という内容です。 ちなみに1600、2000、2400でうるう年と表示されれば正解です。 導き方がわからなかったので解答をみたら (1)が解答でした。 そこで、(2)から(6)まで導けそうな日本語文を考えて、それを 条件としてあてはめてみました。 しかし、(1)と(2)以外は導けませんでした。 なぜ、(3)~(6)は導くことができなかったのでしょう? orとandの順番を入れ替えただけで何故導けなくなったのでしょう? これはifで導こうと思ったら、(1)または(2)でしか 導けない内容なのでしょうか? あまり知識がないので、噛み砕いて教えてくださるとより ありがたいです。 是非、よろしくお願いします。 (1)、400で割り切れるか、あるいは(or)、   4で割り切れて、そして(and)、100で割り切れない場合   『うるう年』、そうでない年を『平年』とする。  =if(or(mod(a1,400)=0,and(mod(a1,4)=0,mod(a1,100)<>0)),"うるう年","平年")  →ちゃんとなる。 (2)、400で割り切れない、あるいは(or)   100で割り切れ、そして(and)4で割り切れない場合   『平年』、そうでない年を『うるう年』とする。  =if(or(mod(a1,400)<>0,and(mod(a1,100)=0,mod(a1,4)<>0)),"平年","うるう年")  →ちゃんとなる。((1)を元に平年とうるう年の条件を入れ替えてみた) (3)、4で割り切れて、そして(and)、100で割り切れない   あるいは(or)400で割り切れる場合   『うるう年』、そうでない年を『平年』とする。  =if(and(mod(a1,4)=0,mod(a1,100)<>0,or(mod(a1,400)=0)),"うるう年","平年") →全部平年になる((1)のandとorを入れ替えただけ) (4)、100で割り切れ、そして(and)4で割り切れない   あるいは(or)400で割り切れない場合   『平年』、そうでない年を『うるう年』とする。  =if(and(mod(a1,100)=0,mod(a1,4)<>0,or(mod(a1,400)<>0)),"平年","うるう年") →全部うるう年になる((2)のandとorを入れ替えただけ) (5)、400で割り切れ、そして(and)4で割り切れ、   かつ(and)100で割り切れない場合   『うるう年』、そうでない年を『平年』とする。  =if(and(mod(a1,400)=0,mod(a1,4)=0,mod(a1,100)<>0),"うるう年","平年")  →全部平年になる。   ifとandで作ってみた。 (6)、400で割り切れ、そして(and)4で割り切れ、   かつ(and)100で割り切れない場合   『うるう年』、そうでない年を『平年』とする。  =if(mod(a1,400)=0,if(mod(a1,4)=0,if(mod(a1,100)<>0,"うるう年","平年")))  →1600,2000,2400年は平年になり、それ以外はFALSEと表示される。   ifの中にifを入れる文を作ってみた。

  • プログラミング

    大学のプログラミングの課題です。「西暦年を入力して、その年が閏年であるか、ないかを判定しなさい。閏年は4で割り切れる年です。ただし、4で割り切れても100で割り切れる年の内、400で割り切れない年は、閏年ではありません。」なかなか上手くできません。

  • 閏年と平年の求め方

    うるう年は西暦年が4で割り切れる年。   ただし100で割り切れても400で割り切れないときは閏年としない 平年は閏年でない年 2001年から2401年の400年の間にうるう年は何回あるかを求める。 この問題なんですがどうやって計算すればいいか解りません。 なるべく式も一緒に教えて下さい。 宜しくお願いします。

  • C言語のプログラミングについて

    私は大学2年なのですが、現在留年するかしないかというぎりぎりのところに立っています。好意で単位をなんとかしてくれる教授を探し出し、C言語の宿題を出されました。ですが私は根っからの文型で、プログラミングなどしたこともありません。教科書を図書館で借りて読んでみるものの、すぐ理解できるような難易度ではないことだけがわかりました。 そこでもしよろしければ、プログラムを教えてもらいたいです。 1.キーボードから整数の入力を繰り返す。0以下の値が入力されたら終了し、入力した値の中の最小値を表示する。また、それが何番目に入力された値かもあわせて表示する。(6つの整数を入力、最後の整数は0を入力することとする。) 実行結果例 整数を入力: 6 整数を入力: 5 整数を入力: 4 整数を入力: 3 整数を入力: 2 整数を入力: 1 整数を入力: 0 最小値は6番目の1 2.キーボードから整数の入力を4回繰り返し、それらの値を2次元配列Aの各要素に順に代入し、その行列のそれぞれの要素と行列式を表示するプログラムを作成せよ。 実行結果例 1行1列の要素? 6 1行2列の要素? 5 2行1列の要素? 4 2行2列の要素? 3 行列A = 6 5 4 3 行列式 = 2 3.キーボードから西暦年を入力し,その年が閏年のときは「○○年はうるう年です」と表示し,そうでないならば「○○年はうるう年ではありません」と表示するプログラムを作成しなさい. なお,閏年の定義は以下の通りである. ・西暦年が4で割り切れる年は閏年 ・ただし,西暦年が100で割り切れる年は平年 ・ただし,西暦年が400で割り切れる年は閏年 実行結果例 西暦年を入力してください. 1987 1987 年はXXXXXXXX 一時的ではありますが、皆様のお力をお借りしたいです。 もちろん、ここでお答えをもらってもわからないままにせずに、無事進級することができたら独学で勉強しようとは思ってます。 なお、理系の人たちはVisualBasicというソフトを使っているようです。よろしくお願い致します。

  • うるう年の出し方

    うるう年は ⅰ、4で割り切れる年はうるう年       ⅱ、例外として100で割り切れたら平年       ⅲ、例外として400で割り切れたらうるう年 ($year%4==0 && $year%100!=0 && $year%400==0); と考えたのですが、ご指摘をおねがいします

    • ベストアンサー
    • Perl
  • 西暦2100年問題

    西暦2100年は、うるう年ではなく、平年である。 現行のグレゴリオ暦で決まっていることではありますが、西暦2000年問題のように、パソコンや、社会生活のうえでのプログラムに、支障を及ばさない事でしょうか?    私の考えでは、そのころには、何らかの緊急修正プログラムが出回るはずだと、思いますが・・・   私のような発想を持ち合わせている人はいませんか?

  • C言語習いはじめです

    大学の講義でC言語を習い始めたのですが、if文でコンパイルするとどうしても解決できないエラーが起こってしまいます。 文の意味は 「4で割り切れる年は”閏年”また、400でも割り切れる年も”閏年”と表示する。100で割り切れる年は”平年”と表示する」 というものです。値は2100で指定しています。 #include <stdio.h> main() { int y; printf(" y=2100; "); { if(y%400:0) { printf("a leap year \n"); {/* 閏年 */} } else if(y%100:0) { printf("a common year \n"); {/* 平年 */} } else if(y%40:0) { printf("a leap year \n"); {/* 閏年 */} } else { printf("a common year \n"); {/* 平年 */} } } return 0; } これをコンパイルすると、どうしても 「エラー E2377 ”ファイル名” 5: If文に ) がない(関数 main)」 と出てきてしまいます。 残るこのエラーだけが解決できません。どなたか、間違っている点がわかる方はいませんでしょうか。お願いします。

  • エクセル 期間計算 平年 閏年

    はじめまして。既出の質問でしたらすみません。エクセル2000を使っています。で、ある期間の日数をdetedif関数を使えば算出できると思うんですが、その期間に閏年が含まれる場合に平年の期間は○日、閏年の期間は○日というふうに分けて算出する方法はありますでしょうか?  例えば2004/5/10~2008/7/17 の期間であれば平年の期間は1095日、閏年の期間は434日になると思いますが、手計算ではなく 期間を入力すれば自動で算出できるようにしたいのです。どなたかわかる方がいらっしゃいましたらご指導お願いします。

  • うるう年の扶持米

    徳川幕府の扶持米の年間支給量は平年と閏年で違ったのでしょうか? 確か1日あたり玄米5合との規定だったと思います。平年は354日前後、閏年は384日前後ですから、閏年は約30日分多かったのでしょうか? ご存知の方教えてください。

  • 平年・閏年

    (1)平年の2009年2月28日の1年後は、    2010年2月28日である。 (2)閏年の2008年2月29日の1年後は、    2009年3月1日である。 (3)○月○日の1年後を表す時は、閏年の    ことを考えて表す。 (1)(2)(3)の考え方は正しいですか?    

専門家に質問してみよう