• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プログラミングについて教えてください!)

rubyプログラムで人の住所を表示する方法

このQ&Aのポイント
  • rubyプログラムでテキストファイルから人の住所を表示する方法について教えてください。
  • テキストファイルには名前と住所が書かれており、登録されていれば住所を表示し、登録されていなければnilを返すプログラムを作りたいです。
  • プログラムの中でsearchメソッドをどのように記述すれば良いのかわかりません。お手数ですが、教えていただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

ん? @meibo が Hash として完成したんだよね? キーは名前なんだよね? def search(name)  @meibo[name] end だけど、meibo に外からアクセスできるならこんなメソッド要らんのでは?

runa3829
質問者

お礼

回答ありがとうございました!

runa3829
質問者

補足

回答ありがとうございます! プログラミングが苦手で、難しく考えてしまうんです。 あと、一つお聞きしたいのが、テキストファイルの中身を記録しているハッシュにアクセスするにはどうしたらいいんでしょうか??

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.2

> テキストファイルの中身を記録しているハッシュにアクセスするにはどうしたらいいんでしょうか?? 自分で attr_accessor :meibo と書いとるやん。

runa3829
質問者

お礼

そういうことだったでんすね。 ありがとうございます。 勉強不足で、お手数をおかけしました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • クラスをシリアライズする(ruby)

     質問はクラスのオブジェクトを、シリアライズしてファイルに保存するプログラムを作成したいのと、シリアライズしたデータベースのオブジェクトを、ファイルから読み込んで復元するプログラムを作成したいと思っています。 そこで、下記のプログラムを使って作りたいのですが、どのように作成したらいいか教えて欲しいです。 是非とも、よろしくお願いします。 class AddressFile def initialize(file) @original = file @meibo = {} fo = open("address_list.txt", "r") lines = fo.readlines fo.close for aLine in lines data = aLine.split @meibo[data[0]] = data[1] end end attr_accessor :meibo def search(name) @meibo[name] end def add(name,address) @meibo[name] = address end def update(name, address) @meibo[name] = address end end 動作環境はruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]になります。 よろしく、お願いします

    • ベストアンサー
    • Ruby
  • 住所の追加について

    AddressFileクラスに記録されているハッシュの内容に、新たに名前とメールアドレスを追加するメソッドaddをAddressFileクラスのメソッドとして定義したいんですが、def add以降の作り方がわかりません。 どのように作成したらいいか、教えてください! お願いします。 ○が名前で、△が住所になります。 class AddressFile def initialize(file) @original = file @meibo = {} fo = open("address_list.txt", "r") lines = fo.readlines fo.close for aLine in lines data = aLine.split @meibo[data[0]] = data[1] end end attr_accessor :meibo def search(name) @meibo[name] end def add(name,address) end end obj = AddressFile.new("address_list.txt") obj.add("○○○○", "△△△△") obj.search("○○○○") obj.search("○○○○") obj.search("○○○○") 初心者で申し訳ないですが、お願いします。

    • ベストアンサー
    • Ruby
  • rubyの繰り返し処理の仕方を教えてください

    rubyの繰り返し処理の仕方がわかりません rubyを使ってのプログラムを勉強してます。最終的には表の書き換えをする プログラムがつくりたいのですが最初でコケましたruby イテレーター ネストで検索してもわからなかったので質問します。どなたか お時間あれ ば教えてください。 お店の番号SA003とSA005を次の "SA001",0,10,20,10 "SA003",0,10,20,20 "SA004",0,10,20,100 "SA005",0,10,20,50 の表なかから探すプログラムを作成しようとしましたが。 繰り返し処理の仕方がわかりません変数のスコープが外れていると思いますし dataの行数は4とはかぎらないので 4.times は使えないのはわかるのですが とりあえずイメージ的に描いたプログラムです。よろしくお願いいたします。 ====testimage.rb======== class Shop_number def initialize @mise=["SA003","SA005"] end def tenposuu() return @mise.size end def tenpo_no(n) return @mise[n] end end data =[["SA001",0,10,20,10],["SA003",0,10,20,20],["SA004",0,10,20,100],["SA005",0,10,20,50]] obj = Shop_number.new obj.tenposuu.times do |i| 4.times do |j| if data[j][0]=~/{obj.tenpo_no(i)}/ then puts data end end ======================= =>["SA003",0,10,20,20] =>["SA005",0,10,20,50] と出したいのですが・・・

    • ベストアンサー
    • Ruby
  • [python] 関数から配列を戻すには?

    グローバル変数(配列)の値を変えたいと思います。 ------------- line = [] def tmp_read(self, *out_line): f = open('tmp.txt') lines2 = f.readlines() # 1行毎にファイル終端まで全て読む(改行文字も含まれる) f.close() # lines2: リスト。要素は1行の文字列データ for line in lines2: print line, print *out_line = lines2 return *out_line tmp_read(self, *line) print line     ← 配列Lineの内容を確認する ------------- この「line」には、文字列を含む配列を入れる予定です。 lines2で得られた値を、戻せば出来そうな気もしますが巧くいきません。 どのように修正すれば酔いか、教えて頂けませんか。

  • fortranのプログラミングについてです。

    フォートランで任意のデータの総和を求めるプログラムを書きたいのですが 例えばデータファイルに2,3,6,8とあればその和19が出てくる感じです。 よくやりかたがわかりません。 始めにこのようにファイル形式でデータを取り込みます。 INTEGER n OPEN(5,FILE='test.txt') 100 READ(5,*,END=110) n WRITE(*,*) n GO TO 100 110 CONTINUE CLOSE(5) END 次に総和をはじきだしたいのですが。ここのところがよくわかりません。 どうか教えていただきたいのですが。

  • Webサーバ上の*.cgiファイルは漏洩するのか?

    某社の安いレンタルサーバサービスを利用しています。 Webサーバのフォルダ内に、次のようにファイルとデータを格納しています。 /public_html/index.htm ---PHPスクリプトを呼び出す。 /public_html/program/*.php --- PHPスクリプト /public_html/program/data/meibo.cgi --- テキストファイル meibo.cgi は、通常、拡張子 txt とするテキストファイルですが、外部から読み取られる恐れが高いので、cgiにしてます。 PHPスクリプトは、meibo.cgi のデータをWebページに表示します。 こういう構成で、不正侵入者により meibo.cgi を読み取られる可能性があるんでしょうか。 ハッカーさんが、いろんなツールを使って、ファイル名を調べたり、ファイルを読み取ったりするものなのでしょうか。 よろしくお願いします。

  • テキストファイルを分割するプログラム

    テキストファイル中の冒頭4文字をファイル名にしてファイルを分割するプログラムを作りたいのですが、よくわかりません。 たとえば、テキストファイルのデータが aaaABC bbbDEF のとき、 ファイル名がaaa.txtで、データがABC のファイルと ファイル名がbbb.txtで、データがDEF のファイルが作成されるようにしたいのです。どのようにすればいいのでしょうか?

  • cのプログラミングについて

    ABCと書かれたテキストファイルを読み込んでXYZと書き換えて上書きし出力する プログラムをどう書いたらいいかわかりません。 誰か知ってる人いますか?

  • FORTRANのプログラミング

    FORTRANに関する質問です。 今、実験のデータ解析を行っているのですが、 データの数が多くて困っています。 プログラムで行いたいのは、データが1.txt,2.txt......100.txtとあります。 1.txtなどにはテキスト形式で、 2、4 6、8 ・・・・・・・・ などデータが入っています。 これら2×4+6×8・・・・・・・・・・ と計算を行い、それらの結果をout1.txt,out2.txt.............out100.txt と計算を行いたいのですがどのようにプログラムを組めばいいかよくわかりません。 とくにファイルの入出力に関してです。 ご解答よろしくお願いします。

  • fatal error LNK1120: 外部参照 1 が未解決です

    またわからないことが・・・ 教えて下さい。 以下をVC++2005でコンパイルすると、 MSVCRTD.lib(crtexew.obj) : error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。 C:\Documents and Settings\tomato\My Documents\Visual Studio 2005\Projects\a\Debug\a.exe : fatal error LNK1120: 外部参照 1 が未解決です。 と警告がでて通りません。 何のことでしょうか。 #include<stdio.h> #include<process.h> struct meibo{   char name[20];   char tel[20];   char address[20]; }; void message( void ); void input( FILE *fp, int cnt , struct meibo *a, int *end ); void main( void ) {   struct meibo a[20];   FILE *fp;   int cnt, end;   if( (fp=fopen( "meibo.dat", "w" ) ) == NULL ){     printf( "Can not open the meibo.dat.\n" );     exit( 1 );   }   message();   fprintf( fp, "番号, 名前, TEL, 住所\n" );   fflush( fp );   cnt = 0;   end = 0;   while( end == 0 ){     input( fp, cnt, &a[cnt], &end );     cnt++;     fflush( fp );     if( cnt == 20 ){       printf( "人数が一杯です.終了します.\n" );       end = 1;     }   }   fclose( fp ); } void message( void ) {   printf( "名前, TEL, 住所, endを入力してください.\n" );   printf( "継続の時はend=0," );   printf( "中止の時は,end=1と入力してください.\n" ); } void input( FILE *fp, int cnt, struct meibo *a, int *end ) {   printf( "名前-->" );   scanf( "%s", a->name );   printf( "TEL -->" );   scanf( "%s", a->tel );   printf( "住所-->" );   scanf( "%s", a->address );   printf( "Exit? Continue:0 Exit:1 -->" );   scanf( "%d", end );   printf( "\n" );   fprintf( fp, "%2d, %s, %s, %s\n",     cnt+1, a->name, a->tel, a->address ); }