C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[35]: ReadLineで読み込んだ文字列の検索 [4]


(過去ログ 66 を表示中)

[トピック内 94 記事 (81 - 94 表示)]  << 0 | 1 | 2 | 3 | 4 >>

■38250 / inTopicNo.81)  Re[43]: ReadLineで読み込んだ文字列の検索
  
□投稿者/ Axolotl (44回)-(2009/07/09(Thu) 17:08:43)
Axolotl さんの Web サイト
ということで自分で考えてみましたが・・・。
messageBox.Show("False");
return false;
}
にしてみましたが、奇数行の行数だけメッセージボックスが表示されてしまいます。

どのようにすればいいのでしょうか???
引用返信 編集キー/
■38252 / inTopicNo.82)  Re[44]: ReadLineで読み込んだ文字列の検索
□投稿者/ επιστημη (2048回)-(2009/07/09(Thu) 17:14:10)
επιστημη さんの Web サイト
> ということで自分で考えてみましたが・・・。
> messageBox.Show("False");
> return false;
> }
> にしてみましたが、奇数行の行数だけメッセージボックスが表示されてしまいます。

"どう"考え、"なに"を行い、結果"なぜ"思いのとおりにならないか、考えてませんね。
「行き当たりばったり」のかほりが漂います。

脳みそ膿むまで考えましょう。


引用返信 編集キー/
■38254 / inTopicNo.83)  Re[44]: ReadLineで読み込んだ文字列の検索
□投稿者/ .SHO (954回)-(2009/07/09(Thu) 17:29:20)
> ということで自分で考えてみましたが・・・。
> messageBox.Show("False");
> return false;
> }
> にしてみましたが、奇数行の行数だけメッセージボックスが表示されてしまいます。

これじゃぁ、どこに入れたんだかわかんないし
最低限「}」は「{」で開いてから閉じようよ。
この3行だけだと気持ち悪い。
引用返信 編集キー/
■38257 / inTopicNo.84)  Re[45]: ReadLineで読み込んだ文字列の検索
□投稿者/ Axolotl (45回)-(2009/07/09(Thu) 20:09:34)
Axolotl さんの Web サイト
僕は、
foreach (string sub in SubStrings(pattern, 3))
{
if (target.IndexOf(sub) >= 0) return true;
}
return false;
}
の文から、return falseの前にfalseだったときの動作を入れると考え、
foreach (string sub in SubStrings(pattern, 3))
{
if (target.IndexOf(sub) >= 0) return true;
}
      messageBos.Show("False");
return false;
}

このようにしましたが、行数文だけfalseが返ってきます。。。

多分IndexOfが行数文だけまわされてるからないぶんだけ返ってくるのだとおもいますが・・・それ以上のことはわかりません。。。

C#はじめてもう2ヶ月近くたってるのに・・・。

よろしくお願いします。
引用返信 編集キー/
■38258 / inTopicNo.85)  Re[46]: ReadLineで読み込んだ文字列の検索
□投稿者/ Jitta on the way (350回)-(2009/07/09(Thu) 20:17:17)
俺の20分が〜(笑)

前にも書いたけど、
いきなりコードを考えるのではなく、
実現したいこと、
それを実現するために必要なデータと処理は何か、
考えましょう。それがプログラミングというものです。
処理とデータがわかったら、様々な言語にあわせて表現を変えるのは、ほんのわずかな手間です。
まず、実現するために必要な処理は何か、考えましょう。
その処理を、実行する順番に列べましょう。
コードに書き換えるのは、その後です。
引用返信 編集キー/
■38260 / inTopicNo.86)  Re[46]: ReadLineで読み込んだ文字列の検索
□投稿者/ .SHO (955回)-(2009/07/09(Thu) 20:31:17)
> ・・・それ以上のことはわかりません。。。

あのさ、教えてもらったやつコピペして
動いた、動いた、はい次。
じゃなくて、どうして動いてるのか勉強しなよ。
脳みそ膿むまで…

引用返信 編集キー/
■38262 / inTopicNo.87)  Re[30]: ReadLineで読み込んだ文字列の検索
□投稿者/ Jitta (582回)-(2009/07/09(Thu) 21:44:03)
2009/07/09(Thu) 21:47:19 編集(投稿者)
せっかくなので晒す。
一応、動かした。
SubStrings は、επιστημηさんのコードをぱくった。
エラーチェックはしていない。
Usage: [プログラム名] [探す対象のファイルへの絶対パス] [探す文字列]


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

namespace Console37991
{
    class Program
    {
        static void Main(string[] args) {
            FAQList list = new FAQList();
            list.ReadFromFile(args[0]);
            FAQ[] faq = list.SearchAnswer(args[1]);
            if (faq == null) {
                Console.WriteLine("見つかりませんでした。");
            } else {
                Console.WriteLine(faq[0].Answer); // とりあえず
            }
        }
    }

    class FAQ
    {
        public string Question {
            get;
            set;
        }
        public string Answer {
            get;
            set;
        }
        public FAQ() : this("", "") {
        }
        public FAQ(string q, string a) {
            Question = q;
            Answer = a;
        }
        public bool IsHit(string ask) {
            return (Question.IndexOf(ask) < 0 ? false : true);
        }
    }

    class FAQList : List<FAQ>
    {
        public void ReadFromFile(string FileName) {
            this.Clear();
            using (StreamReader reader = new StreamReader(FileName)) {
                while (reader.Peek() >= 0) {
                    string q = reader.ReadLine();
                    string a = reader.ReadLine();
                    this.Add(new FAQ(q, a));
                }
                reader.Close();
            }
        }

        public FAQ[] SearchAnswer(string ask) {
            bool found = false;
            foreach (var str in SubStrings(ask, 3)) {
                foreach (var faq in this) {
                    if (faq.IsHit(str)) {
                        found = true;
                        yield return faq;
                    }
                }
                if (found) { break; }
            }
        }

        private static IEnumerable<string> SubStrings(string source, int min_len) {
            for (int len = source.Length; len >= min_len; --len) {
                for (int pos = 0; pos <= source.Length - len; ++pos) {
                    yield return source.Substring(pos, len);
                }
            }
        }
    }
}


ああ!投稿前に「同じ文字数でマッチしたものからランダムで」を見て
修正した箇所がバグってた。

引用返信 編集キー/
■38265 / inTopicNo.88)  Re[31]: ReadLineで読み込んだ文字列の検索
□投稿者/ みきぬ (521回)-(2009/07/10(Fri) 09:02:02)
本題と関係なくてすみませんが、どうしても気になるので教えてください。

> 脳みそ膿むまで

これってどういう意味でしょうか。あるいは、どういう意図で使っているのでしょうか。
ぐぐってみると悪いニュアンスに見える(※)のですが、文脈からはそうはとれないし。

※脳が膿んできたとか、脳腫瘍とか、脳みそ膿んでるのか? とか
引用返信 編集キー/
■38266 / inTopicNo.89)  Re[32]: ReadLineで読み込んだ文字列の検索
□投稿者/ .SHO (956回)-(2009/07/10(Fri) 09:11:41)
>>脳みそ膿むまで

本当に脳みそが膿んじゃったらヤバいけど…^^;
まぁ、もうちょっと自分で考えてから質問した方がいいですよ。
ってことだと思います。

引用返信 編集キー/
■38300 / inTopicNo.90)  Re[33]: ReadLineで読み込んだ文字列の検索
□投稿者/ すがり (58回)-(2009/07/10(Fri) 16:41:05)
答え出ているようですけど、一応。

        private void button1_Click(object sender, EventArgs e) {
            string[] lines = {
      "うしかもしか", "ヌー",
      "かもしか",     "ウシ科",
      "かも",         "鳥類",
      "もしかしたら", "仮定",
      "りんご",       "果物",
      };
            string pattern = "かもしか";

            int maxlength = 0;
            List<string> findList = new List<string>();

            // 偶数番の文字列と"かもしか"をマッチさせる。
            // マッチしたら次行(奇数番)をプリントする。
            for (int i = 0; i < lines.Length; i += 2) {
                if (match(lines[i], pattern)) {
                    if ( maxlength < lines[i + 1].Length ) {
                        maxlength = lines[i + 1].Length;
                        findList.Clear();
                        findList.Add(lines[i + 1]);
                    } else if (maxlength == lines[i + 1].Length) {
                        findList.Add(lines[i + 1]);
                    }
                }
            }
            if (findList.Count > 0) {
                Random rnd = new Random(Environment.TickCount);
                MessageBox.Show(findList[rnd.Next(0, findList.Count)]);
            } else {
                MessageBox.Show("(´・ω・`)");
            }

前回貼り付けたコードのbutton1_Clickのところを書き換えるだけ。
難しいことは一切やってないです。(まともに検証してないけど多分動くはず)

引用返信 編集キー/
■38317 / inTopicNo.91)  Re[34]: ReadLineで読み込んだ文字列の検索
□投稿者/ Axolotl (46回)-(2009/07/10(Fri) 18:51:49)
Axolotl さんの Web サイト
ありがとうございます。
findlistが0より大きいか小さいかで返すのですね。そうすれば行数ごとに返されることもないということか。

って違うかもしれんが。


これらのソースはやはり自分にはレベルが高すぎました。この掲示板もそんな無謀な挑戦をするところじゃないし。

小学生のうちからプログラミングやっときゃいま苦労しなかったのになあ・・・と独り言を語ってみる。

・・・・・
引用返信 編集キー/
■38328 / inTopicNo.92)  Re[35]: ReadLineで読み込んだ文字列の検索
□投稿者/ Jitta (583回)-(2009/07/10(Fri) 22:48:31)
No38317 (Axolotl さん) に返信
> ありがとうございます。
> findlistが0より大きいか小さいかで返すのですね。そうすれば行数ごとに返されることもないということか。
>
> って違うかもしれんが。
>
>
> これらのソースはやはり自分にはレベルが高すぎました。この掲示板もそんな無謀な挑戦をするところじゃないし。
>
> 小学生のうちからプログラミングやっときゃいま苦労しなかったのになあ・・・と独り言を語ってみる。
>
> ・・・・・

私がプログラミングを始めたの、中学校からですよ(笑)
何度でも書きますが、「コードを書く」ことが「プログラミング」ではありません。やりたいことをするために、何をしなければならないかを考えることがプログラミングです。

たとえば。大阪から東京へ行きたいと思ったとき。電車、飛行機、バスという手段があります。バスにも、高速バスと夜行バスがあります。電車にも、ローカルを乗り継ぐという手もあるし、新幹線を使うという手もあります。手持ちのお金と、かけられる時間から、どれかを選択します。これも一つのプログラミングです。
つまり、物心ついたときから、意識せずに行っているはずです。

コンピュータという「他人」相手にそれを行う、というのが違うだけです。
もう一度、最初からゆっくり、何が必要なのか、必要なことをするために何が必要なのか、考えましょう。
引用返信 編集キー/
■38382 / inTopicNo.93)  Re[35]: ReadLineで読み込んだ文字列の検索
□投稿者/ すがり (59回)-(2009/07/13(Mon) 09:07:44)
No38317 (Axolotl さん) に返信
> findlistが0より大きいか小さいかで返すのですね。そうすれば行数ごとに返されることもないということか。

・一致する結果の中で1番大きなものを選ぶ
・一致する結果のうち、文字列の長さが同じものが複数ある場合ランダムで選ぶ

という仕様じゃありませんでしたっけ?
追加したのはその部分です。(それ以外の部分は完全パクリなので)

※私の場合C#は1週間ほどです、他の言語は2年程度はやってますが。
引用返信 編集キー/
■38383 / inTopicNo.94)  Re[36]: ReadLineで読み込んだ文字列の検索
□投稿者/ biac (143回)-(2009/07/13(Mon) 11:42:16)
biac さんの Web サイト
# こーゆー余談になると出てくるw

>>小学生のうちからプログラミングやっときゃいま苦労しなかったのになあ・・・と独り言を語ってみる。
>
> 私がプログラミングを始めたの、中学校からですよ(笑)

私がプログラミングを始めたのは、大学に入ってからですよ。
今の年寄り (50歳以上くらい) のプログラマーは、社会に出てからとか、せいぜい大学の授業でホストコンピューターを少しやったとか、そんなもんです。
なんせ、この世にパソコンというものが存在しませんでしたから f(^^;
引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 | 2 | 3 | 4 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -