• 締切済み

アルゴリズムの問題-文字列探索

基本情報技術者の勉強をしているのですが、午後の問題のアルゴリズム(文字列探索)でつまっています。 どなたか、アドバイスいただけますでしょうか? 以下、長くなってしまって申し訳ないです。 複数行の文字列からなるファイルの各行を、与えられた検索文字列で検索し、見つかった場合に、その行番号と開始位置を印字します。 例:検索文字列 YA   ファイル内容    MINATOKU TORANOMON    CHIYODAKU KASUMIGASEKI    SHIBUYAKU SHIBUYA 印字結果 行番号-3 開始位置-6 行番号-3 開始位置-16 【宣言部は省略してあります】 ・ファイルを開く ・LN←0 ・R()←検索文字列 ・RN←文字数 ・レコード入力(ファイル,M(),sts) ■sts=0 │・MN←ファイルの文字列の文字列長 │・LN←LN+1 │・K←1 │■K<=MN-RN+1 ││・L←1 ││■M(K+L-1)=R(L)かつL<=RN │││・L←L+1 ││■ ││▲L>RN │││・LNとKを印字  ・・・・ここが分かりません ││▼ │■ │・レコード入力(ファイル,M(),sts) ■ ・ファイルを閉じる Kに数値を格納する記述が見当たりません。 Kをカウントアップするか、数値を代入する必要があると思うのですが、どうなのでしょうか? ※問題の量が多いので、省略している部分もあります。質問内容が分からなかったら、補足要求してください。 よろしくお願いいたします。

みんなの回答

  • ykkw_2001
  • ベストアンサー率26% (267/1014)
回答No.1

>Kをカウントアップするか、数値を代入する必要があると思うのですが、どうなのでしょうか? そうだと思います。 >省略している部分もあります。 ここがちょっと、気になりますが・・・

pochi523
質問者

お礼

さっそくの回答、ありがとうございます。 やはりおかしいですよね。 ほかの問題でも、文字型のデータを不等号記号で比べてたりして、PG経験者からみると絶対におかしいっていうのがあるんです。

pochi523
質問者

補足

省略してあるのは、〔プログラムの説明〕部分と宣言部です。処理部はすべて書いたので、やはり問題文がおかしいのかなと思います。

関連するQ&A

  • 【VBA】該当する文字列がある列を削除したい。

    指定した文字列を検索して、そのセルのある列削除したいです。 例えば2行目に、表の項目として「社名、フリガナ、住所、電話番号、備考、・・・」 と、あるときに、フリガナと電話番号の列を削除させたいのです。 シートによって項目の位置が若干変わる為、列番号を指定して削除するようなことは出来ません。 項目の名前が変わることはありません。 vbaでどのようにすればよいのでしょうか。 また、2行目の範囲で文字列を検索して、該当する文字列があるセルの位置情報を 取得したい場合はどうすれば良いでしょうか? 宜しくお願いします。

  • 探索アルゴリズム

    テキストファイルを読み込んで、該当する文字列を含む行を表示するというプログラムを作りたいのです。ファイルを読み込むことはできるのですが、該当する文字列を含む行を表示するやり方がわかりません。どなたか助けてもらえないでしょうか? 一応私が作ってみたプログラムはこんな感じになったんですけど・・・ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) {  FILE *fp;  char ch;  if( argc != 3)  {  printf(" 使用法 : <プログラム名> <ファイル名> <文字> \n");  return -1;  }  if((fp = fopen(argv[1],"r")) == NULL)  {  printf("ファイルを開くことができません\n");  return -1;  }  while(( ch = fgetc(fp)) != EOF)  if(ch == *argv[2])  {  printf("%cが見つかりました\n",ch);  break;  }  fclose(fp);  return 0; }

  • ファイルの文字列の処理の質問

    今ファイルに対して文字列の処理をしています。 あるファイルに対して一定の文字列を検索して、その検索したい文字列が なければ、その一行をファイルに出力したいですが、手元にwindowsバージョン のgrep.exe で実現すると考えています。 しかし、検索したいファイルは、文字列が入ってない行があります。 そのため、検索したい文字列が存在しない行は、改行だけの行を結果として 出力されています。改行だけの行を除きたいですが、どうすればいいか? ファイルのsjisです。例えば、内容としては、以下のようになっています。 aiiiiii ballllll fafafa 777777 とするファイルがあります。そのファイルに対して、aという文字が入ってない行を 取りたいですが、実際にgrep -v "a" ファイル名 でやると、777777の行とすべて 改行だけある行が取られてました。 777777だけをとる方法がありますでしょうか?

  • 複数の文字列を含むファイルの検索-linux

    linuxにおいてファイル内の文字列を検索するのにgrepを用いますが、 複数の文字列を含むファイルを検索するにはどうしたらよいでしょうか。 同じ行ではなく別の行にある場合で、ファイル名を出力したいです。 つまり ~~~~~~~~~ ~~~~~~~~文字列1  ~~~~~~~~~~ ~~~~~~~~ ~~~~~~~文字列2 のような記述のあるファイルを探すにはどうしたらよいでしょうか。

  • 文字列検索しセルの位置が知りたい

    指定範囲内で文字列を検索し、見つかったセルの行番号、列番号を知りたいのです。 マクロでなく関数で出来るでしょうか?

  • ファイルから文字列を読み込んで、検索するプログラム

    以下のようなプログラムをつくりたいのですが、 どうしたらよいでしょうか?? 文字列を配列型に入れるときにわからなくなって しまうのですが。。。 ファイルからデータを順番に読み込み,メモリ上に一次元配列構造に並べて線形探索するプログラムを作成せよ. データの仕様 一行に、 「番号(スペース)読み仮名(スペース)文字列(住所)」 があり、これが10~1000行ほど、ファイルに(.dat) 入っている。 ファイルを配列に読み込んだあと、 番号を入力すると、住所が検索されてでてくる。 問題文も微妙なのですが、 これは番号の配列と住所の配列は別にして、 検索したほうがいいですよね、、? 何かヒントになることだけでも良いので、 よろしくお願いします!

  • 文字列を削除したい。

    Stringの文字列をStringに移し特定の 文字を消したいと思っています。 調べたところdeleteというメソッドで。 開始位置と終了位置を指定すれば 削除できるみたいですが、 文字列を指定してその文字列を削除する、 という事はできますか? お願いします。

    • ベストアンサー
    • Java
  • VB6.0 特定の文字列の取得方法

    環境:WINDOWS 2000 Visual Basic 6.0 (1)htmlファイルをInbutB関数で読み込み、変数AAAに代入 (2)Instr関数を使用して Instr(htmlが格納された変数,"<td")などと特定の文字位置を検索 (3)mid関数などで特定の文字位置から文字位置を抜き出す  例:mid(AAA,<TD>開始位置A,文字列開始位置B) 上記のようなことをやりたいと考えています。 今回困っていることは<TD>開始タグの文字位置の検索です。 <td valign="top" align="right" width="600"> width="600"のtd開始タグの位置を検索したいと思っています。 ファイルは複数あり、<td と width="600" の間に入っているものも異なり、またシンプルに<td width="600>というパターンも存在します。 こういった場合、どの用に特定の条件を満たした<TD>タグの位置を検索すればよいでしょうか?

  • EXCElで特定の文字列の行をコピー

    下記のようなシートがあります。 列A~K 行1~80程度 列は変わることがありません。 行はデータ量によって40~80くらいまで変動します。 この中の特定の行をコピーして他のシートにペーストしたいのです。 コピーしたい行のK列は430という数字が入ります。 K列には430以外の数字も入ることがあります。 また、コピーしたい行の範囲は「開始」という文字列から「小計」 と言う文字列の間です。(小計の後の行にも430という数字が出てきます) マクロを使えば出来ると言うことは聞いたのですが、ヘルプを見ても よくわかりません。 わかる方いましたら是非ご教授下さい。

  • UWSCの文字列操作

    UWSCの文字列操作について質問です。 あるテキスト中から特定の文字に囲まれた文字列を抜き出したいのですが、やり方が見つからずに困っています。 たとえば下記の文字列がある場合に "抜き出したい文字列" たとえば「抜き」と「列」に囲まれた部分を切り出したいんです。 この例だと、処理結果が「出したい文字」となるような流れです。 開始位置からの文字数によって切り出す方法はわかったのですが、特定の文字列の開始位置から、特定の文字列の位置までの切り出しがどうしてもわかりませんでした。 誰かわかる方がいましたら助けてください。 よろしくお願いします。

専門家に質問してみよう