2017-03-23 21 views
-2

内で基本的に私のプログラムの目標は、私はそれが名前のためにユーザーに確認されたどのような私のプログラムが今やっているこの電話番号検索テキストファイル

Harry Keeling (555)123-4567 
Frank James (555)123-8901 
Arthur Paul (555)987-4567 
Todd Shurn (555)987-8901 

ようになり 4つの電話番号を含むファイルを持っているということです最後の名前を入力し、ファイルを繰り返して一致するかどうかを確認し、電話番号が変数の電話番号に保存されているかどうかを確認します。一致しない場合、プログラムはエラーを出力します。しかし、それぞれの試合が見つかった後、プログラムはプロンプトを表示されたままになります。番号yまたはnを検索し続けますか?はいの場合は、ファイルを繰り返しループすることが懸念されますが、基本的に私のプログラムは動作しませんそして私のコード

#include <iostream> 
#include <fstream> 
#include <string> 
using namespace std; 
void lookup_name(ifstream&, string&); // prototype 
int main() 
{ 
    ifstream myfile; 
    string phonenumber; 
    string choice; 
    lookup_name(myfile, phonenumber); 
    if (phonenumber == " ") { 
     cout << "Error" << endl; 
    } 
    else { 
     cout << "The Telephone Number you Requested is" << phonenumber << endl; 
     cout << "Do you Want to look up another name in the directory?" << " " << "<Y/N" << endl; 
     cin >> choice; 
     if (choice == "Y") 
      lookup_name(myfile, phonenumber); 
    } 
} 
void lookup_name(ifstream& myfile, string& phonenumber) 
{ 
    string fname; 
    string lname; 
    string name1, name2, dummy, choice; 
    myfile.open("infile.txt"); 
    cout << "What is your first name" << endl; 
    cin >> fname; 
    cout << "What is your last name" << endl; 
    cin >> lname; 
    for (int i = 0; i < 4; i++) { 
     myfile >> name1 >> name2; 
     if (fname + lname == name1 + name2) { 
      myfile >> phonenumber; 
      myfile.close(); 
      if (choice == "Y") 
      { 
       continue; 
      } 
      else { 
       myfile >> dummy; 
      } 
    } 


    } 
} 
+1

をあなたが質問を編集して、適切な資本化および句読点を追加することができるよう – NathanOliver

+2

が、それは、可能でしょうmain' 'でループを使用する必要があります誰かがFacebookに貼り付けた意識の流れの代わりに、わかりやすい英語を読んでいますか? –

+0

とハリウッド映画のように数字をマスクする: "555" :) – dlatikay

答えて

1

あなたは継続を促すmain()自体の内部ループを追加する必要がありますなぜ私は見当がつかない、とあなたはあなたのlookup_name()機能でミスを修正する必要があります。

代わりにこのようなより多くのものを試してみてください。

#include <iostream> 
#include <fstream> 
#include <sstream> 
#include <string> 
#include <limits> 

using namespace std; 

bool lookup_name(istream&, const string&, string&); // prototype 

int main() 
{ 
    ifstream myfile("infile.txt"); 

    string name, phonenumber, choice; 

    do 
    { 
     cout << "What is the name? "; 
     getline(cin, name); 

     if (!lookup_name(myfile, name, phonenumber)) { 
      cout << "Error" << endl; 
     } 
     else { 
      cout << "The Telephone Number you Requested is '" << phonenumber << "'" << endl; 
     } 

     cout << "Do you want to look up another name in the directory (Y/N)? "; 
     cin >> choice; 
     cin.ignore(numeric_limits<streamsize_t>::max(), '\n'); 

     if ((choice != "Y") && (choice != "y")) 
      break; 

     myfile.seekg(0); 
    } 
    while (true); 

    return 0; 
} 

bool lookup_name(istream& myfile, const string& name, string& phonenumber) 
{ 
    string line, fname, lname; 

    while (getline(myfile, line)) 
    { 
     istringstream iss(line); 
     if (iss >> fname1 >> lname) 
     { 
      if (name == (fname + " " + lname)) 
       return getline(iss, phonenumber); 
     } 
    } 

    return false; 
} 
関連する問題