iSAMrx72's思いつきBlog

twitterが使いこなせない管理人のメモです。思いついたとき書きます。
トップスポンサー広告スポンサーサイト

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--/--/ (--) --:--| スポンサー広告 | コメント(-) | トラックバック(-) | 編集
トップブログブローチは書き込みの長さ制限がありますね。前の書き込みの続きです。Part2。

ブローチは書き込みの長さ制限がありますね。前の書き込みの続きです。Part2。

気がつきませんでした、最後の方が切れてましたので、分けました。


namespace ConsoleApplication1
{
    class Program
    {
        public static void ShellSort<T>(T[] a)
            where T : IComparable<T>
        {
            int n = a.Length;
            int h;
            for (h = 1; h < n / 9; h = h * 3 + 1) ;
            for (; h > 0; h /= 3)
                for (int i = h; i < n; i++)
                    for (int j = i; j >= h && a[j - h].CompareTo(a[j]) > 0; j -= h)
                        Swap(ref a[j], ref a[j - h]);
        }

        public static void Swap<T>(ref T a, ref T b)
        {
            T c = a; a = b; b = c;
        }

        public static void AllDataWrite(Meibo[] llist)
        {
            StreamWriter sw = new StreamWriter(@"d:\c#src\test.txt");

            for (int i = 0; i < llist.Length; ++i)
            {
                string w1 = llist[i].Yomi + "," + llist[i].Namae + "," + llist[i].Jyusyo;
                sw.WriteLine(w1);
            }
            sw.Close();

        }

        public static void AllDataDisp(Meibo[] list, ref int min, ref int max)
        {
            int i;
            min = 0;
            for (i = 0; i < list.Length; ++i)
                Console.Write("{0}, {1}, {2}, {3}\n", i, list[i].Yomi, list[i].Namae, list[i].Jyusyo);
            max = i;
            Console.WriteLine();
        }

        public static void SelDataDisp(Meibo[] list, string SearchStr, ref int min, ref int max)
        {
            bool hajime = true;
            for (int i = 0; i < list.Length; ++i)
            {
                if (list[i].Yomi.StartsWith(SearchStr))
                {
                    if (hajime == true)
                    {
                        hajime = false;
                        min = i;
                    }
                    Console.Write("{0}, {1}, {2}, {3}\n", i, list[i].Yomi, list[i].Namae, list[i].Jyusyo);
                    max = i;
                }
            }
            Console.WriteLine();
        }

        public static void AllDataGet(Meibo[] list, string[] lines, int AllLines)
        {
            for (int linecount = 0; linecount < AllLines; linecount++)
            {
                string[] stArrayData = lines[linecount].Split(','); //この場合は、読みと氏名だけです。
                list[linecount].Yomi = stArrayData[0];              //','でデータを区切ってあります。
                list[linecount].Namae = stArrayData[1];             //Meiboクラス追加でこれでは駄目です。
                list[linecount].Jyusyo = stArrayData[2];            //この部分が追加
            }
        }



        static void Main(string[] args)
        {
            int MinVal = 0; int MaxVal;
            string[] lines = System.IO.File.ReadAllLines(@"d:\c#src\test.txt");
            Meibo[] list = new Meibo[lines.Length];
            for (int w = 0; w < lines.Length; w++)
                list[w] = new Meibo();

            bool saisyo = true;
            bool done = false;

            MaxVal = lines.Length;

            while (!done)
            {

            ee:
                if (saisyo)
                {
                    Console.WriteLine("(^_^)/以下の二つから選んでね。");
                    Console.WriteLine("R=ファイルを読み込み");
                    Console.WriteLine("Q=終了\n");
                }
                else
                {
                    Console.WriteLine("(^_^)以下の五つから選んで。");
                    Console.WriteLine("E=訂正");
                    Console.WriteLine("A=データの追加");
                    Console.WriteLine("D=削除");
                    Console.WriteLine("S=選択");
                    Console.WriteLine("Q=終了\n");
                }

                string judge = Console.ReadLine().ToUpper();

                if (saisyo == true)
                {
                    if (judge == "R")
                    {
                        //データそのものは最初に読んでるので、Entry型へ変えます。
                        AllDataGet(list, lines, MaxVal);
                        ShellSort(list);
                        AllDataDisp(list, ref MinVal, ref MaxVal);
                     }else
                        if(judge == "Q")
                            goto syuryodesu;

               }
                else
                {
                    if (!((judge == "E") | (judge == "Q") | (judge == "A") | (judge == "D")
                    | judge == "S"))
                    {
                        Console.WriteLine("(>_<)入力の値が?です。");
                        goto ee;
                    }
                }

                switch (judge)
                {
                    case "E":
                        Console.WriteLine("(~o~)");
                saido:
                        Console.WriteLine("訂正する番号を入力です。");
                        int k = int.Parse(Console.ReadLine());
                        if (!(k >= MinVal & k <= MaxVal))
                        {
                            Console.WriteLine("(>_<)番号が範囲に無いです。");
                            goto saido;

                        }
                        list[k].OneDataInput("E");
                        AllDataDisp(list, ref MinVal, ref MaxVal);
                        AllDataWrite(list);
                        break;

                    case "Q":
                        done = true;
                        break;

                    case "A":                           //今回の追加 データを追加します。
                        Meibo[] tuika = new Meibo[1];
                        tuika[0] = new Meibo();
                        tuika[0].OneDataInput("A");        //MeiboクラスのOneDataInput()がCallされます。警告でます。何故?
                        list = list.Union(tuika).ToArray(); //Entry型の配列の追加したものをlistとします。
                        AllDataDisp(list, ref MinVal, ref MaxVal);
                        AllDataWrite(list);
                        break;

                    case "D":

                    saidodesu:
                        Console.WriteLine("(^o^)");
                        Console.WriteLine("削除する番号を入力してね");
                        k = int.Parse(Console.ReadLine());

                        if (!(k >= MinVal & k <= MaxVal))
                            goto saidodesu;                             //入力の範囲をチェック
                        List<string> mojiList = new List<string>(lines);//配列削除のために
                        mojiList.RemoveAt(k);                           //削除
                        lines = mojiList.ToArray();                     //配列に戻します。
                        list = null;                                    //一旦オブジェクトをクリアします。

                        list = new Meibo[lines.Length];
                        for (int w = 0; w < lines.Length; w++)
                        {
                            list[w] = new Meibo();
                        }

                        AllDataGet(list, lines, lines.Length);
                        AllDataDisp(list, ref MinVal, ref MaxVal);
                        AllDataWrite(list);
                        break;

                    case "S":
                        Console.WriteLine("(^o^)");
                        Console.WriteLine("選択の文字 半角カタカナ を入力ですよ。");
                        string SearchStr = Console.ReadLine();
                        SelDataDisp(list, SearchStr, ref MinVal, ref MaxVal);
                        break;

                    default:
                        break;

                    }
                   
                    saisyo = false;
            }

        syuryodesu:
            ;
            Console.WriteLine("(^o^)/~~~"); //goto先文章が無いと駄目です。
            Console.WriteLine("エンターキーを押して、終了です。");
            Console.ReadLine();             //前はこの文章がなかったので、空文が必要でした。
        }
    }
}

スポンサーサイト
12/01/ (土) 07:26| ブログコメント(0) | トラックバック(-) | 編集
URL
コメント
パスワード
秘密
管理者にだけ表示を許可する
 
プロフィール

isamrx73

Author:isamrx73
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック

月別アーカイブ
カテゴリ
検索フォーム

RSSリンクの表示
リンク
ブロとも申請フォーム
QRコード

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。