うるう年判定プログラムを作成する方法

このQ&Aのポイント
  • Tiny Basicのプログラムで、西暦年数を入力し、うるう年かどうかの判定を行うプログラムを作成する方法についてまとめました。
  • うるう年の条件は、400で割り切れる年数または4で割り切れ、かつ100で割り切れない年数です。
  • プログラムの作成手順として、まず年数を入力し、次に条件分岐を行い、割り切れるかどうかを判定します。割り切れる場合には「うるう年」と表示し、割り切れない場合には何も表示しません。
回答を見る
  • ベストアンサー

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) っていうとこまで作ったんです>< この次はどうしたら。。 てか、割り切れないっていうのはどうやって表したらいいんですか?

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★Tiny Basic は詳しくありませんが、プログラミング経験者としてアドバイス ・割り切れないとは、あまりが出るということです。  つまり、Mod 演算子で割ったあまりを求めて 0 以外ならば割り切れなかった事になります。  (年 Mod 4) として出てきた数が 0 以外ならば、4 で割り切れなかったということです。  (年 Mod 400) として出てきた数が 0 以外ならば、400 で割り切れなかったということです。  よって、閏年の判定は  If (年 Mod 4) = 0 Then    If (年 Mod 100) = 0 Then      If (年 Mod 400) = 0 Then       MsgBox "うるう年"      Else       MsgBox "うるう年ではない"      End If     Else       MsgBox "うるう年"    End If   Else       MsgBox "うるう年じゃない"  End If  となります。 ・あと While 文で入力した A が 0 以外なら繰り返すようにしないと駄目です。  cls  input A  While A <> 0   ここに閏年の判定と表示を記述      input A  Wend ・上記のを参考に頑張ってみて下さい。 ・以上。下の『参考URL』もどうぞ。

参考URL:
http://www008.upp.so-net.ne.jp/ikaia/VB.htm#閏年の処理方法

関連するQ&A

  • 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 というプログラムをつくったんですがどんな点数を入れても青点って結果がでてしまうんです。 どうしたらいいんでしょうか?

  • Tiny Basicのプログラムでもうひとつ。。

    三角形の三辺の長さを入力し、面積を求めるプログラムを作成せよ。三角形の面積はヘロンの公式を用いて求める。ヘロンの公式による面積計算部分を関数プログラムとして作成せよ。 ヘロンの公式:三辺の長さをa,b,cとすると,(s(s-a)(s-b)(s-c))^2  s =(a+b+c) それで僕なりに作ってみたんですが cls print"入力した数字から三角形の面積を求めます" input a,b,c s=(a+b+c)/2 A=(s-a)*(s-b)*(s-c) B=A*s M=(B^2) print M end が副プログラムを入れないで作ったもので cls print"入力した数字から三角形の面積を求めます" input a,b,c print Mb3 end Function mb3 s=(a+b+c)/2 A=(s-a)*(s-b)*(s-c) B=A*s M=(B^2) print M end function になるんですがなぜだか結果が0になってしまいます なぜでしょうか?

  • 閏年のプログラム

    C言語(閏年)の質問です。 任意の範囲の年から閏年の表示とその数をカウントして次の実行結果のように表示するプログラムの作成で途中まではわかって修正・追加する箇所があったら一緒に教えてください。(ここでは2つの年をmain関数内で入力し、その範囲の西暦を引数とする関数checkYearを使用するものとする。int型の関数checkYearは、引数に西暦をとり、その西暦が閏年であれば、1を返し、閏年でない場合は0を返す。) なお、閏年の判定方法は以下のとおりである。 条件1 西暦年が4で割り切れる年は閏年である 条件2 条件1を満たしていても、西暦年が100で割り切れるときは閏年でない 条件3 条件2を満たしていても、西暦年が400で割り切れるならば閏年である 実行例1 西暦を入力:2000 西暦を入力:2009 2000年 2004年 2008年 閏年は3回あります。 実行例2 西暦を入力:2100 西暦を入力:2000 2000年 2004年 2008年 2012年 2016年 2020年 (省略) 2096年 閏年は25回あります。 実行例3 西暦を入力:2090 西暦を入力:2110 2092年 2096年 2104年 2108年 閏年は4回あります。 #include <iostream> bool checkYear(int year); int main() { int year; int year2; printf("西暦を入力:"); scanf("%d",year); printf("西暦を入力:"); scanf("%d",year2); int count = 0; for (int i = year; i < year2; i++) { if (checkYear(i)) { printf("%d年\n"); count++; } } printf("閏年は%d回です。\n"); return 0; } bool checkYear(int year) { return (((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0); }

  • Tiny Basic。。。。

    今、やってるプログラムで躓いてしまっているのでどうか助けてください>< 今、ファイルの書き込みのプログラムでフロッピーディスクに書き込みをするプログラムをつくってて。。 前につくったのはフロッピーにjyoho01.txtのファイルを書き込むっていうのを作って 'Example-F2. 'データファイルの書き込み Cls Print "フロッピディスクにデータを書き込みます。" Print "FDを挿入して下さい。" Print "準備ができたら、";chr$(&h22);"y";chr$(&h22);"と入力してください。" ans$="" While not (ans$="y" or ans$="Y") ans$=inkey$ Wend Open "A:\jyoho01.txt" for output as #1 For i=1 to 10 Print #1,i Next i Close print "書き込みが終了しました。" End っていうのを作ったんです。これはちゃんとできたんです。 つまづいてるのが フロッピーディスク内にあるX線回折結果のデータファイル(xrd01.csv)のデータ数を1/5に縮減して、新しいファイル(xrd02.csv)を作成するプログラムを作成せよ。 っていうのなんです。 とりあえず、このX線回折結果っていうのがエクセルで 15  133.333 15.02  170 15.04  170 15.06  143.333 15.08  146.667 15.1  170 15.12  173.333 15.14  200 15.16  156.667 15.18  190 15.2  180 っていうデータがあって80までの値があるんです。 先生から聞いたところ5分の一にしろというのは15と15.1の間の数値を飛ばして15 15.1といったふうにファイルの書き込みを指示すれば14行くらいで出来るって言われて自分でやってみたんですが。。 'Example-F2. 'データファイルの書き込み Cls Print "フロッピディスクにデータを書き込みます。" Print "FDを挿入して下さい。" Print "準備ができたら、";chr$(&h22);"y";chr$(&h22);"と入力してください。" ans$="" While not (ans$="y" or ans$="Y") ans$=inkey$ Wend Open "A:\xrd02.csv" for output as #1 For i=15 to 80 step 0.1 Print #1,i Next i Close print "書き込みが終了しました。" End で実行したところ左の15 15.1っていうのはできるんですが右の値を出すことができません。 どうやったらいいんでしょう。。 長くてすみません(泣

  • 基本的なプログラム

    基本的なプログラム 学校の教科書に載っている問題がわかりません。 是非教えて下さい。 Cによる基本的な条件分岐(if,else if文)のプログラムです。 西暦年(4けたの整数)を入力し、その年がうるう年かどうかを判断するプログラムを作りなさい。 4で割り切れるときはうるう年であるが、100で割り切れるときはうるう年ではない。 しかし、400で割り切れればうるう年である。 ・・・とゆう問題文です。 #include<stdio.h> int main(void) { int x; printf("西暦を入力して下さい¥n"); scanf("%d",&x); if(x%4==0) printf("うるう年である¥n"); else if(x%400==0) printf("うるう年である¥n"); else if(x%100!==0) printf("うるう年でない¥n"); else printf("うるう年でない¥n"); return 0; } ・・・とりあえず自分で考えてみたのですがどうでしょうか; 間違ってると思いますが頑張って考えました・・・;; 4けたの整数ってゆうのはどう書けばいいんでしょうか? 実際にこのプログラムは動くのでしょうか? もっと省略して書くことができるのでしょうか?  等、色々わからないことばかりです。 プログラミングの授業自体に苦手意識を持っているので得意ではありません。 間違いなど指摘していただけたらと思います!! よろしくお願いします!

  • 西暦を入力して、うるう年かどうか判定せよ!という問題です。

    西暦を入力して、うるう年かどうか判定せよ。ただしうるう年の条件は4で割り切れる、100で割り切れない、400で割り切れる。という問題です!!誰か教えて下さい!お願いします~。

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

    次の5人の学生の成績の個人別の平均点と、科目別の平均点をそれぞれ求め、表示するプログラムを作成せよ。Print Using 文を使うと、きれいな表形式の出力が可能です。 学籍番号 英語 数学 情報 平均   1   70 60 80 2 50 60 50 3 70 90 100 4 90 100 50 5 40 70 80 という問題があって。。自分なりにやってみたんですが。。 Dim a(5,5) For i=1 to 5 For j=1 to 5 Read a(i,j) print a(i,j); Next j print Next i Data "学生番号","英語","数学","情報","平均" Data 1,70,60,80,70 Data 2,50,60,50,53 Data 3,70,90,100,87 Data 4,90,100,50,80 Data 5,40,70,80,63 Data "平均",64,76,72,71 End っていうふうにつくってみたんですがうまくいかなくて。。 みなさん、助けてください><

  • Tiny Basic 日本語

    Tiny Basic for Windows v1.21を利用しているものです。 入力した日本語を後ろから表示したいです。あいうと入力したら、ういあと出力したいです。 以下が実行したプログラムです。 10 INPUT "お名前は?: ", U$ 20 PRINT "こんにちは "; U$ ;" さん" 25 REM 30 INPUT "丸がいくつ欲しいですか?: "; N 35 S$ = "" 40 FOR I = 1 TO N 50' S$ = S$ + "○" print "○" 55 NEXT I 60 'PRINT S$ 65 REM 70 INPUT "もう一度やりますか(Y/N)? "; A$ 80 IF LEN(A$) = 0 THEN GOTO 70 90 A$ = LEFT$(A$, 1) 100 IF (A$ = "Y") OR (A$ = "y") THEN GOTO 30 110 PRINT "さようなら " 111 INPUT "挨拶はなん回: "; N2 120 FOR I = 1 TO N2 130 PRINT RIGHT$(U$,6); "さん "; 140 NEXT I 150 PRINT 160 PRINT "さようなら " 170 END 行番号130の処理では、アルファベットを後ろから表示できました。ひらがなや漢字はそうなりません。 御指摘お願いします。

  • プログラミング

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

  • C++でうるう年判定のプログラムを作りたいのですが

    C++でうるう年判定のプログラムが作りたいのですが・・・ #include <iostream> using namespace std; int main() { return 0; } 問題のこの下の部分の内容が書けません 変数をa % 4という計算と%100と%400をしなければいけないことはわかっています。この式の入れ方がわかりませんif文だとは思っているのですが 表示は「<<a<<"はうるう年です";」と「<<a<<"はうるう年ではありません";」という判定を表示したいです。

専門家に質問してみよう