プログラム問題集

プログラム問題集

多分プログラミングの問題集でも書いていく

トランプのシンボル表示

問題

TrumpSymbols.txtを読み込み、入力した文字に対応したシンボルを表示しましょう。


TrumpSymbols.txt
・トランプのシンボルがアスキーアートで書かれたテキストファイルです。
・下記のTrumpSymbols.txtの内容をコピーして使用してください。
・1つのシンボルは、最大横幅20文字、高さ10行になっています。
・シンボル間は空行が入っています。

入力文字と処理
・入力文字はC(クラブ), D(ダイヤ), H(ハート), S(スペード)とし、対応したアスキーアートを表示します。
アスキーアートが表示されれば、入力待機状態に戻ります。
・C, D, H, S以外が入力されると終了するものとします。


TrumpSymbols.txt

       *****
      *******
      *******
 ***** ***** *****
*******************
*******************
 *****  ***  *****
        ***
       *****
      *******

         *
        ***
       *****
      *******
     *********
      *******
       *****
        ***
         *


   ***       ***
  ******   ******
 ******** ********
 *****************
 *****************
  ***************
   *************
    ***********
      *******
        ***

         *
        ***
      *******
    ***********
  ***************
 *****************
 *****************
  *****  *  *****
         *
       *****
C, D, H, S のどれかを入力してください。
>S
         *
        ***
      *******
    ***********
  ***************
 *****************
 *****************
  *****  *  *****
         *
       *****

C, D, H, S のどれかを入力してください。
>D
         *
        ***
       *****
      *******
     *********
      *******
       *****
        ***
         *


C, D, H, S のどれかを入力してください。
>
終了します。
解答例

C#

using System;
using System.Text;
using System.IO;

namespace Trump
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"D:\Documents\enzan1\Trump\TrumpSymbols.txt";
            const int symbolsNum = 4;
            const int symbolHight = 10;
            
            String[] symbols = new String[symbolsNum];

            //トランプのマークの読み込み
            using (FileStream fs = new FileStream(filePath, FileMode.Open))
            {
                using (StreamReader sr = new StreamReader(fs))
                {
                    for (int i = 0; i < symbolsNum; i++)
                    {
                        StringBuilder sb = new StringBuilder();
                        for (int j = 0; j < symbolHight; j++)
                        {
                            sb.AppendLine(sr.ReadLine());
                        }
                        symbols[i] = sb.ToString();
                        sr.ReadLine();
                    }
                }
            }

            Boolean loop = true;

            do
            {
                Console.WriteLine("C, D, H, S のどれかを入力してください。");
                String str = Console.ReadLine();

                switch(str)
                {
                    case "H":
                        Console.WriteLine(symbols[2]);
                        break;
                    case "S":
                        Console.WriteLine(symbols[3]);
                        break;
                    case "D":
                        Console.WriteLine(symbols[1]);
                        break;
                    case "C":
                        Console.WriteLine(symbols[0]);
                        break;
                    default:
                        loop = false;
                        break;
                }

            } while (loop);

            Console.WriteLine("終了します。");
        }
    }
}


C#

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

namespace Trump
{
    class Program
    {
        static void Main(string[] args)
        {
            string filePath = @"D:\Documents\enzan1\Trump\TrumpSymbols.txt";
            const int symbolsNum = 4;
            const int symbolHight = 10;

            String[] symbolsName = { "C", "D", "H", "S" };
            Dictionary<String, String> symbols = new Dictionary<string, string>();

            //トランプのマークの読み込み
            using (FileStream fs = new FileStream(filePath, FileMode.Open))
            {
                using (StreamReader sr = new StreamReader(fs))
                {
                    for (int i = 0; i < symbolsNum; i++)
                    {
                        StringBuilder sb = new StringBuilder();
                        for (int j = 0; j < symbolHight; j++)
                        {
                            sb.AppendLine(sr.ReadLine());
                        }
                        symbols[symbolsName[i]] = sb.ToString();
                        sr.ReadLine();
                    }
                }
            }

            Boolean loop = true;

            do
            {
                Console.WriteLine("C, D, H, S のどれかを入力してください。");
                String str = Console.ReadLine();

                if (symbols.ContainsKey(str) == true)
                {
                    Console.WriteLine(symbols[str]);
                }
                else
                {
                    loop = false;
                }

            } while (loop);

            Console.WriteLine("終了します。");
        }
    }
}