その月に何日あるかを判定するプログラム
Posted: 2009年10月22日(木) 02:11
お世話になってます。
今まで学習した内容がちゃんと理解できてるかどうか確認の意味で
自分でプログラムを考えてみました。
★その西暦のその月に何日あるかを判定するプログラム★です。
学習した範囲は 型・演算子・比較演算子・if文・switch文・for文・while文・配列 です。
全部使いこなせないので、今回は主にif文と配列を使ってコードを書いてみました。
予定している実行結果は・・・・「1900年の2月は28日あります。」→です。
うるう年の定義は
「年が4で割り切れる年はうるう年だが100で割り切れる場合はうるう年ではない、
そして400で割り切れる年はそれらとは無関係にうるう年」 です。
(蛇足ですが、うるう年は4年に1度だと思ってました。
ところが、必ずしもそうではない事を
C言語のサンプルソースで知って、ちょっと感動。
400年に3回は、うるう年から次のうるう年まで7年位空くんです。
・・・最近だと1900年が通常の4年に1度のうるう年にあたらない年だと
わかって1900年の2月に焦点を当ててみました。^^)
コンパイラエラーが出てしまいます。
教えてもらいたいのは、間違って書いている部分も勿論のこと
プログラムを作る上での考え方があっているかどうか?
ソースコードに こういう風に考えています、とわかってもらえるように
コメントをつけていますので、そこに焦点をあててアドバイス頂けると
とってもありがたいです。
(ココこう書くともっとスマートになるよ、とか、
こっちの表記がみやすいよ、など。)
また、先に記述した 私が学習した範囲内で、if文や配列以外の
方法でのプログラムや考え方などあったら、発想の転換にとっても参考になるので
ぜひ、教えてください。よろしくお願いします。
□使用しているコンパイラ gcc
◇ソースコード◇
:6: error stray '\201' in program
:6: error syntax error at '@' token
この二種類の表示が色んな行で 出ています。
間違えないように注意しながらコメントを書いていたら
2時間近くかかってしまいました・・・orz(不器用なので。;;)
明日に差し支えてしまうので、今日はこれで寝ます。
コメントを頂いた方にお礼を言うのが遅くなってしまいますが、
必ず返しますので、許してください。
今まで学習した内容がちゃんと理解できてるかどうか確認の意味で
自分でプログラムを考えてみました。
★その西暦のその月に何日あるかを判定するプログラム★です。
学習した範囲は 型・演算子・比較演算子・if文・switch文・for文・while文・配列 です。
全部使いこなせないので、今回は主にif文と配列を使ってコードを書いてみました。
予定している実行結果は・・・・「1900年の2月は28日あります。」→です。
うるう年の定義は
「年が4で割り切れる年はうるう年だが100で割り切れる場合はうるう年ではない、
そして400で割り切れる年はそれらとは無関係にうるう年」 です。
(蛇足ですが、うるう年は4年に1度だと思ってました。
ところが、必ずしもそうではない事を
C言語のサンプルソースで知って、ちょっと感動。
400年に3回は、うるう年から次のうるう年まで7年位空くんです。
・・・最近だと1900年が通常の4年に1度のうるう年にあたらない年だと
わかって1900年の2月に焦点を当ててみました。^^)
コンパイラエラーが出てしまいます。
教えてもらいたいのは、間違って書いている部分も勿論のこと
プログラムを作る上での考え方があっているかどうか?
ソースコードに こういう風に考えています、とわかってもらえるように
コメントをつけていますので、そこに焦点をあててアドバイス頂けると
とってもありがたいです。
(ココこう書くともっとスマートになるよ、とか、
こっちの表記がみやすいよ、など。)
また、先に記述した 私が学習した範囲内で、if文や配列以外の
方法でのプログラムや考え方などあったら、発想の転換にとっても参考になるので
ぜひ、教えてください。よろしくお願いします。
□使用しているコンパイラ gcc
◇ソースコード◇
#include <stdio.h> main () { int year , month , days , the_days ; year = 1900 ; month = 2 ; // うるう年かどうかを判定し、うるう年の場合の処理 if ( ( year%4 == 0 && year%100 != 0 ) || year%400 == 0 && ( month >= 1 && month <= 12) ) ) { int days [12] = {31,29,31,30,31,30,31,31,30,31,30,31 } ; the_days = days [ month - 1 ] ; printf("%d年の%d月は%d日あります。\n" ,year ,month ,the_days) ; } // うるう年ではない場合の処理 if ( ( year%4 != 0 && yaer%100 == 0 ) || yaer%400 != 0 && ( month >= 1 && month <= 12 ) ) { int days [12] = {31,28,31,30,31,30,31,31,30,31,30,31 } ; the_days = days [ month - 1 ] ; printf("%d年の%d月は%d日あります。\n" ,ywar ,month ,the_days) ; } // ありえない(例:55月など)数字入力があった時のエラー処理 else { puts("入力エラーです。正しい数字を入力してください。"); } }コマンドプロンプト画面のコンパイルエラーの表示はこうです。
:6: error stray '\201' in program
:6: error syntax error at '@' token
この二種類の表示が色んな行で 出ています。
間違えないように注意しながらコメントを書いていたら
2時間近くかかってしまいました・・・orz(不器用なので。;;)
明日に差し支えてしまうので、今日はこれで寝ます。
コメントを頂いた方にお礼を言うのが遅くなってしまいますが、
必ず返しますので、許してください。