• ベストアンサー

社員名簿から検索する関数

社員番号から名前や電話番号を検索する関数は、どのようにしたら良いのでしょうか? 社員名簿のプログラムに入れます。ユーザーにインプットしてもらうのは、名前、社員番号、電話番号です。最大100人分入る名簿でファイルに保存する必要はありません。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.3

#1です。 >名前、社員番号で1つの要素をつくり、その集合(配?)から検索したいのですが、配列で考えて良いのでしょうか? その通りです。例えば以下のようにします。 1つの要素として、例えば以下の様な構造体を作成します。 typedef struct _tSHAIN { char name[100]; /*名前*/ int shain_bango; /*社員番号*/ char denwa_bango[20]; /*電話番号:*/ } SHAIN; 社員番号は数字であるとします。 SHAIN tbl[100]; /* 100人分の社員テーブル*/ tbl[n].shain_bango (nは0~99の何れかの値)でテーブル中の社員 を参照できます。 例えば、このテーブルに先頭から20件まで、 データが入っていて、画面から入力された社員番号が このテーブルにあるかどうかを検索するには、 以下のようにします。 int i; int shain_in; /* 社員番号*/ shainに入力データをセット for (i=0;i<20;i++){ if (shain==tbl[i].shain_bango){ 社員番号が見つかった時の処理 break; /* forのループを抜ける*/ } } if (i==20){ 見つからなかったの処理 }

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

その他の回答 (2)

  • hokaido
  • ベストアンサー率0% (0/1)
回答No.2

社員番号から名前や電話番号を検索する関数とのことですが、この場合検索は二分探索を使ったほうが効率は良いと思います。ただし、登録を行った後データを、社員番号で昇順または降順にする必要があります。 プログラム的には修正もできる関数も作ったほうが良いと思われます。 また、検索をする場合scanfは控えたほうが良いです。テストプログラムなら良いですが。 fgets等が妥当でしょう。

全文を見る
すると、全ての回答が全文表示されます。
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

本件、C言語(又はC++)の練習問題と考えて良いのでしょうか。 上記の前提で、話を進めます。 1.最大100個の要素を持ったテーブルを作成します。 (社員名簿のテーブル) 2.1つの要素は、名前、社員番号、電話番号から構成されるものとします。 3.画面から、名前、社員番号、電話番号を入力します。 このデータをテーブルへ順に先頭から格納します。この処理は、最大100回繰り返しを行えるようにします。 4.データの入力完了後、社員番号を画面から入力します。入力された社員を、テーブルの先頭から順に検索し、一致した社員番号存在すれば、それを表示します。この処理は、何回でも行えるようにします。 上記のようなプログラムを作成してください。

october31
質問者

補足

回答ありがとうございました。名前、社員番号で1つの要素をつくり、その集合(配列?)から検索したいのですが、配列で考えて良いのでしょうか?その点が分かりません。テーブルの作成はまだ出てきていませんので、他の方法で考えたいと思います。

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

関連するQ&A

  • 名簿をgoogle検索のように検索

    シート1に名簿があり、別のシートのセルで名簿を検索したいです。 名簿には氏名、ふりがな、識別番号、住所、電話番号。 別シートには氏名、住所、電話番号を入力する書類。 たとえば、氏名を入力するセルで(さ)と入力すると、 斉藤○○ 佐川○○ 佐藤○○ ドロップダウンで(さ)から始まる名前が出てくるようにしたいのですが、どなたか教えてください。

  • VBA Excel 名簿を検索

    Excel2013です。 別シートに名簿、作業用シートで名前を検索する、別シートにある名簿から検索された名前を選択すると、その名前の住所や電話番号が作業用シートに表示出来るようにしたいのですが、どなたかVBに詳しい方教えて下さい。 出来れば、名簿に無い場合は新規に登録出来たり、変更があったりしたら編集も出来て、重複してる場合は削除などが出来ればいいのですが。

  • 学校での名簿作成に派遣社員も掲載されるものですか?

    学校での名簿作成に派遣社員も掲載されるものですか? 私立学校(中学高校)で派遣社員として働いています。 学校の名簿作成のために、住所や電話番号の提供が必要のようです。 名簿は印刷され、教職員+生徒全員に配布されます。 印刷物として残ることに抵抗を感じるので、掲載される情報を 限定されたもの(名前と電話番号)のみにすることは出来るでしょうか? 今まで企業で働いていたため、学校でのルールがよくわかりません。 今までの職場では必要最低限(緊急連絡時の連絡先)の情報提供のみであり、 印刷されたとしても、大人(社会人)のみの配布だったので抵抗はなかったのですが、 配布される範囲が広いため抵抗を感じています。 派遣社員でも個人情報を提供しなければならないでしょうか?

  • 社員名簿の管理方法

    社員名簿について質問です。 みなさんの会社では、社員名簿はどのように管理されていますか? 今現在うちの会社では、エクセルで作成してあるのを社内の掲示板に載せていて、 誰もが見ることが出来る上、印刷もかけられます。さらに、ファイルの保存も可能です。 個人情報保護法が施工されましたが、この状況だと保護法にふれそうな気がします。 また、一人一冊社員名簿を配布するくらいであれば、保護法にはふれないのでしょうか?

  • ある条件を満たしたデータのみのコピーについて

    EXCEL2000を使っています。 ここに、既存の名簿ファイル[Z](社員全員のもの)があります。 ここのデータを拾って、新たに名簿ファィル[X](任意の人だけ載っているもの)を作ろうとしています。 名簿ファイル[Z]には、社員番号(セルA)・名前(セルB)・住所(セルC)・電話番号(セルD)が入力されています。 ところが名簿ファィル[X]には、まだ社員番号しか入力されていません。 そこで、名簿ファイル[Z]を参照し、マッチした社員番号があった場合、その行の名前・住所・電話番号が それぞれ入る様、LOOKUP関数を使用してみましたが、1行目しかうまくいきません。 参照範囲で固定にすべきところには $ を入れたにもかかわらず、2行目からはメチャクチャなデータが 入ってしまいます。 LOOKUP関数を使用するのが間違っているのかも知れませんが、他に何を使ったら良いのかわからず 途方に暮れています。どなたか良い知恵を貸していただけませんでしょうか? なお、名簿ファイル[Z]の社員番号は全角で入力されており、新たに作成する名簿ファイル[X]の社員番号は 半角で入力されています。 どうぞ宜しくお願いします。

  • 検索関数についておしえてください

    よろしくお願いします。 検索関数を使って、書庫のどの場所に「該当するファイル」があるかを検索できるようにしたいと考えています。 考えとしましては、各ファイルにファイル番号を付し、品名と宛名を入力すれば、ファイル番号が表示されるようにしたいと考えています。

  • 別の名簿の情報を埋め込む

    今回もお世話になります。 名簿A、B,Cの3つがあったとします。ここには氏名、電話番号、住所が載っています。 名簿Dを作りました。ここにはまだ氏名しか載っていません。 これからDに、該当する電話番号と住所をABCから見つけて追記しなければいけないのですが、量が膨大で手動でやりたくないです。 同一人物をABCから検索し、書き込むという作業を関数か何かで自動化できたりしないでしょうか。 よろしくお願いいたします。

  • VBAで一定期間の名簿を検索、抽出できますか?

    お世話になっております。皆さんよろしくお願いします。 Aという名前のエクセルファイルのsheet1に次のような名簿が入力してるとします。   A     B    C     D 1 申請日  名前   住所  電話番号 2  4/1   甲   東京   00-0000 3  4/2   乙   大阪   11-1111 4  4/3   丙   京都   22-2222 ・  4/3   虎   北海道  33-3333    ・  ・    ・   ・     ・ こういう名簿が3000件くらいあります。申請日は一件しかない日もあれば、数百件ある日もあります。また、申請日は一概に4/1から順になっていないところもあります。 この名簿を他のBというエクセルファイルに指定した期間ごとに抽出したいと考えています。 例えば、Bファイルのsheet1に、   A     B    C     ~  G 1 4/3    4/4   4/5    ~  4/9 と一週間分を入力し、コマンドボタンを押したら、Bファイルのsheet2 に、   A     B    C     D 1 申請日  名前   住所  電話番号 2  4/3   大田   京都   22-2222   3  4/3   佐藤   北海道  33-3333    ・  ・    ・    ・    ・ ・  ・    ・    ・    ・ 11  4/9    山田   愛知  44-4444    できたら嬉しいのですが、できるのでしょうか?どなたかお知恵をお貸しください。 よろしくお願いします。

  • エクセルで名簿を作りたいのですが

    エクセル全くの初心者です、名簿を作りたいのですがうまく行かないので質問させて頂きます。 回覧板を回す名簿を作りたいと思っています、一行ずつあけて縦に15人の名前を入れ横方向に日付の欄を4つつけたいと思っています。 (4回まわした日付を入れる) 田中 良  11-1111 田中太郎  11-1112    上のような感じで左側の一マスの中に名前と電話番号(6桁 例11-1111)を入れたいです。名前が三文字の人は姓名の間を一マスあけてやってみたのですが3文字の人と4文字の人で電話番号の先頭がそろいません。セルを結合して中央ぞろえでもうまくいかないのですが回覧板の前の名簿は同じ形式の名簿でもちゃんとそろっているのですがどうやったらいいでしょうか?

  • 相互的な検索のできるハッシュテーブル?

    こんにちは。データ構造とアルゴリズムを学習しているJava入門者です。 「名前」と「電話番号」の二つのデータを格納するハッシュテーブルを実装したプログラムを考えています。名前をキーにして電話番号を呼び出すところまではいったのですが、 それと同時に電話番号と名前のどちらを入力しても、もう片方が検索できるようなプログラムを作れ、というのが今回の課題なのです。 基本的なハッシュテーブルの構造は学んでいるのですが、 どうしても「名前と番号、どちらのデータからも同じデータに辿り着く」ようなハッシュ関数が頭に浮かびません。 検索して色々調べてみたのですが、それらしい記事を見つけることが出来ませんでしたので、ここに投稿させていただきました。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java