ツェラーの公式を使い、TEXTBOXに記入した日の曜日を表示させようとしています。
現在作っているものだと2000年代は正しく表示されるのですが、それ以前は間違った曜日が表示されてしまいます。
例)1894年2月2日金曜日が月曜日と表示される。
おかしな部分があればご指摘お願いいたします。
今回はVisual Studio2019でWindows フォーム アプリケーション(.NET Framework)で作成しています。
現在書いているものから大きく変えずに作りたいので、ツェラーの公式をつかったものでお願いいたします。
C#
1コード 2```public partial class Form1 : Form 3 { 4 public Form1() 5 { 6 InitializeComponent(); 7 } 8 9 private void button1_Click(object sender, EventArgs e) 10 { 11 Hizuke y = new Hizuke(); 12 int f = y.tosi(textBox1.Text,textBox2.Text,textBox3.Text); 13 14 if (f == 0) 15 label1.Text = "日曜日"; 16 if (f == 1) 17 label1.Text = "月曜日"; 18 if (f == 2) 19 label1.Text = "火曜日"; 20 if (f == 3) 21 label1.Text = "水曜日"; 22 if (f == 4) 23 label1.Text = "木曜日"; 24 if (f == 5) 25 label1.Text = "金曜日"; 26 if (f == 6) 27 label1.Text = "土曜日"; 28 } 29 } 30 class Hizuke 31 { 32 public int tosi (String a,String b,String c) 33 { 34 int e; 35 36 int y = int.Parse(a);//年 37 int m = int.Parse(b);//月 38 int d = int.Parse(c);//日 39 40 if (m <= 2) 41 { 42 m += 12; 43 y -= 1; 44 } 45 46 e = (5 * y / 4 - y / 100 + y / 400 + (13 * m + 8) / 5 + d) % 7; 47 return (e) ; 48 } 49 } 50 51}
何を何で作っているかぐらいは書けませんか? (例: Visual Studio 2022 で Windows Forms アプリをターゲットフレームワーク .NET Framework 4.8 で作っています)
> ツェラーの公式を使い
それが must なのですか? .NET Framework のライブラリを使って、「ツェラーの公式を使い」とかは問わないで、入力した年月日からその日の曜日が分かればいいということではないのですか?
コメントありがとうございます。
勉強し始めで知識不足な点が多く、ご指摘いただいたところをできる限り修正いたしました。
“Windows Forms アプリをターゲットフレームワーク .NET Framework 4.8 “のところがわからないので、お手数だとは思いますが詳しく教えていただけると有難いです。
> “Windows Forms アプリをターゲットフレームワーク .NET Framework 4.8 “のところがわからないので、お手数だとは思いますが詳しく教えていただけると有難いです。
それが分からないと言われては・・・ Visual Studio でプロジェクトを作成するときにそのあたりの設定は自分で行っているはず。
あ、なるほど。今わかりました。
ありがとうございます。
> 今回はVisual Studio2019でオブジェクト指向の使用が条件となっています。
話が通じてますか?
先ほどの回答を読む前の修正でしたので、、
今修正しましたがどうでしょうか。
「c# .net framework 曜日 取得」をキーワードにググってみてください。
調べてきました。
今やっていることが高校の授業課題なので、出来れば今書いているものから大きく変えずに直したいのですが難しいでしょうか。
ツェラーの公式が must なのですか? ・・・と言う質問に対し、あなたは
> ツェラーの公式は自分が使いたいと考えているだけなので必ずの使用というわけではありません。
と返事したじゃないですか。それは何だったの? もう勝手にやって
すいませんでした。ありがとうございました。
>それ以前は間違った曜日が表示されてしまいます。
具体的にいつを指定したらどうなるのですか?
またオブジェクト指向の使用が条件と言われますが、現状はただ関数をクラスに定義しているだけでオブジェクト指向とは言えないかと思います。
せめて、クラスは日付を保持するクラスとし、年、月、日のプロパティ、曜日を得るメソッド(もしくはプロパティ)を実装するようなものになるかと思います。
>具体的にいつを指定したらどうなるのですか?
1894年2月2日が本来金曜日のところ月曜日と表示されます。
提示されているコードを試しましたが金曜日になりました。
>クラスを作ってリターンを使用することが条件
また条件が変わりましたが、Returnを使用すると言ってもプロパティを作ってもメソッドを作っても値を返す以上普通はReturnを使用します。
課題とのことですが、計算ロジックとは別に本当に求められていることを理解しなくてはいけないかと思います。
お騒がせしてすみません。
パソコンの方の不具合でおかしくなっていただけみたいです。
曜日は正しく表示されました。
ありがとうございました。
回答1件
あなたの回答
tips
プレビュー