ここから本文です

条件分岐のif~else文やswich文、乱数を使って解くプログラミングがわかりません。...

mai********さん

2019/5/2015:33:04

条件分岐のif~else文やswich文、乱数を使って解くプログラミングがわかりません。教えてください。おねがいします。coderunnerを使用してます。
using System ;

class Untitled
{
st

atic void Main(string[] args)
{
までしかわかりません。

補足言語はC#です

Console.Write,class Untitled,coderunner,using System,int jyear,year&gt,else if

閲覧数:
48
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

qui********さん

2019/5/2619:28:20

switchも乱数も出てこないと思うけど。

> までしかわかりません。
それは、作文で「"作文"という題名と自分の名前までは自分で書きました」みたいなものだね。カケラもわかっていないと言わざるを得ないと思う。

まずは。
コンピュータは一旦置いといて、手で答えを出すとしたら、どう考えるかの道筋を日本語で書いてみましょう。

・西暦2020年が与えられました。
2020は2019以上なので、「令和」です。
2020-2019は1になります。なので、「2年」です。

・西暦2000年が与えられました。
2000は2019以上ではありません。
2000は1989以上なので、「平成」です。
2000-1998は2になります。なので、「3年」です。

・西暦1926年が与えられました。
1912は2019以上ではありません。
1912は1989以上ではありません。
1912は1926以上なので、「昭和」です。
1926-1926は0になります。なので「元年」です。

(1912~1925が与えられたときどう表示すればいいんだろう? 問題に指示がないよ)

・西暦645年が与えられました。
645は2019以上ではありません。
645は1989以上ではありません。
645は1926以上ではありません。
645は1912以上ではありません。
645は1912より小さいので「エラー」です。

こうなるようにプログラムに組み立てていきます。coderunnerは知らないので考慮しません。

まず、西暦年を入力してもらいましょう。エラーのことは考えないでいいですか?
int year;
year=int.Parse(Console.ReadLine());

令和だけを考えたプログラム片だとこうなるでしょう。
if(year >= 2019)
{
Console.Write("令和"); //2019以上だった
Console.Write(year - 2019 +1);
Console.Write("年");
}

では、平成も...
if(year >= 2019)// 入力した年は2019以上?
{
Console.Write("令和"); // 2019以上だった
Console.Write(year - 2019 +1);
Console.Write("年");
}
else if(year>=1989) // 2019以上でなかった。1989以上?
{
Console.Write("平成"); // 1989以上だった
Console.Write(year - 1989 +1);
Console.Write("年");
}

だとすれば昭和は...
if(year >= 2019)// 入力した年は2019以上?
{
Console.Write("令和"); // 2019以上だった
Console.Write(year - 2019 +1);
Console.Write("年");
}
else if(year>=1989) // 2019以上でなかった。1989以上?
{
Console.Write("平成"); // 1989以上だった
Console.Write(year - 1989 +1);
Console.Write("年");
}
else if(year>=1926) //1989以上でなかった。1926以上?
{
Console.Write("昭和"); // 1926以上だった
Console.Write(year - 1926 +1);
Console.Write("年");
}

あぁ、「元年」にしなきゃいけないんだっけ。
year-1926+1が0だったら「元」を表示するんだね。
Console.Write(year - 1926 +1);
を以下で置き換えればいいかな。
int jyear=year-1926;
if(jyear==0)
{
Console.Write("元");
}
else
{
Console.Write(jyear+1);
}

あと、1912より小さい値だったら「エラー」にしなきゃ。

if(year >= 2019)// 入力した年は2019以上?
{
Console.Write("令和"); // 2019以上だった
int jyear=year-2019;
if(jyear==0)
{
Console.Write("元");
}
else
{
Console.Write(jyear+1);
}
Console.Write("年");
}
else if(year>=1989) // 2019以上でなかった。1989以上?
{
Console.Write("平成"); // 1989以上だった
int jyear=year-1989;
if(jyear==0)
{
Console.Write("元");
}
else
{
Console.Write(jyear+1);
}
Console.Write("年");
}
else if(year>=1926) //1989以上でなかった。1926以上?
{
Console.Write("昭和"); // 1926以上だった
int jyear=year-1926;
if(jyear==0)
{
Console.Write("元");
}
else
{
Console.Write(jyear+1);
}
Console.Write("年");
}
else if(year<1912) //1912より小さい?
{
Console.Write("エラー");
}

あとは、これにあなたの「ここまでわかる」とあわせて動くプログラムに仕立て上げて下さい。
はっきり言って、プログラムとしてはとても...クソです。定数が直に書き込まれていたり、ほとんど同じ動作があちこちに出てきたり。でも、それ以前の段階のようなので、敢えてベタな書き方をしています。もちろん、課題のオプションへの対応なんて無視。

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

tha********さん

2019/5/2617:49:32

ちょっと画像がぼやけててなにが買いてあるかさっぱり分かりません

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる