2016-04-26 6 views
0

入力ファイルから4列の単語を持つプログラムを作成する必要があります。入力ファイルから文章を生成してランダムな単語を選択する

enter image description here

ランダムに各列から単語を選択して文を生成します。究極の目的は、会話を出力ファイルに保存することです。私はすでに、入力ファイルを読み込み、上の書き込みに出力ファイルを開きますが、私は列から単語を選択して、文を作成するかどうかはわかりません、私のコードを作成しました

enter image description here

配列を使って推測するとうまくいくだろうが、ファイルとどのように接続するのか分からない。

#include<iostream> 
#include<fstream> 
#include<cstdlib> 
#include<string> 

using namespace std; 

int main() 
{ 
    string ifilename, ofilename, line; 
    ifstream inFile, checkOutFile; 
    ofstream outFile; 
    char response; 

    // Input file 
    cout << "Please enter the name of the file you wish to open : "; 
    cin >> ifilename; 
    inFile.open(ifilename.c_str()); 
    if (inFile.fail()) 
    { 
     cout << "The file " << ifilename << " was not successfully opened." << endl; 
     cout << "Please check the path and name of the file. " << endl; 
     exit(1); 
    } 
    else 
    { 
     cout << "The file is successfully opened." << endl; 
    } 

    // Output file 

    cout << "Please enter the name of the file you wish to write : "; 
    cin >> ofilename; 

    checkOutFile.open(ofilename.c_str()); 

    if (!checkOutFile.fail()) 
    { 
     cout << "A file " << ofilename << " exists.\nDo you want to continue and overwrite it? (y/n) : "; 
     cin >> response; 
     if (tolower(response) == 'n') 
     { 
      cout << "The existing file will not be overwritten. " << endl; 
      exit(1); 
     } 
    } 

    outFile.open(ofilename.c_str()); 
    if (outFile.fail()) 
    { 
     cout << "The file " << ofilename << " was not successfully opened." << endl; 
     cout << "Please check the path and name of the file. " << endl; 
     exit(1); 
    } 
    else 
    { 
     cout << "The file is successfully opened." << endl; 
    } 

    // Copy file contents from inFile to outFile 

    cout << "Hi, what's up? " << endl; // Pre-set opener 

    while (getline(inFile, line)) 
    { 

     cout << line << endl; 
     outFile << line << endl; 
    } 

    // Close files 
    inFile.close(); 
    outFile.close(); 
} // main 

答えて

0

あなたは文の単語を格納し、各列から特定の行要素を選択するrandような乱数発生器を使用する文字列の2次元ベクトルを使用することができます。次のようなもの

vector<vector<string>> myConversationVector; 
while (choice != "no") 
{ 
    std::cout << myConversationVector[rand() % 5][0] <<" " 
       << myConversationVector[rand() % 5][1] <<" " 
       << myConversationVector[rand() % 5][2] <<" " 
       << myConversationVector[rand() % 5][3]; 

} 
関連する問題