2017-04-18 13 views
-3

大文字の文字をNATOの表音アルファベットに変換する必要があります。 2つの配列を使用する。 A =アルファ、B:C++配列のNatoアルファベット

letters.txtは

words.txtはNATOフォネティックコードとテキストファイルのAlpha-ズールー

(例であるAZ文字でテキストファイルです= Bravo ...)

問題は、文字が変換されるたびにズールーが印刷されることです。

正しく変換できるようにこのプログラムを追加または変更する必要があるのは何ですか?ここで

は、あなたがあなたの文字や単語を保持するために、適切なコンテナを必要とするコード

#include <iostream> 
#include <string> 
#include <fstream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 

ifstream inputFile; 
inputFile.open("words.txt"); 
string word; 

while (inputFile >> word) 
{ 
} 


inputFile.open("letters.txt"); 
char letter; 

while (inputFile >> letter) 
{ 
} 

char choice; 
char letter2; 
char Alpha[26]={letter}; 
string Words[26]={word}; 
    do 
{ 

    cout<<"\nPlease enter a letter"<<endl; 
    cout<<"Letter: "; 
    cin>>letter2; 

for(int count=0; count < 26; count++) 
    { 

    cout<< Words[count]; 

    } 

    cout<<"\nDo you want to run this program again? <y/n>"<<endl; 
    cin>>choice; 

} 
    while(choice=='y' || choice=='Y'); 

return 0; 
} 
+1

'しばらく(で、inputFile >>単語を)続ける{}'単に以前 'word'各反復に置き換えられます。あなたは1つの単語、最後に読んだものだけを保存します。 'string' [26] = {word};'は26文字列の配列を定義し、最初の単語は 'word'に格納されたもので残りは空の文字列です。 'Words'と' Letters'を直接読んでください。 –

+1

一度に1ステップずつ小さくする必要があります。まず一つのファイルをメモリに読み込みます。 [小さなプログラムをデバッグする方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)も参照してください。 –

答えて

1

です。

は今、あなたは、変数(単語手紙という名前の変数)へのすべての単語/文字を入れて、ファイルからそれらを読んでいます。しかし、すべての単語/文字が前の単語を上書きします(そのため、最後の単語が表示されるのはズールー)。

実際にそれらをすべて読み取って保持するには、ベクトルまたは配列が必要です。

単語の例は、(文字のために同じことを行う):このように

std::vector<std::string> words; 
words.reserve(26); // you know you need 26 words, reserve memory in advance 
string word; 

while (inputFile >> word) 
{ 
    words.push_back(word); 
} 

すべてのあなたの言葉は、あなたの容器に言葉です。その後

あなたのアルゴ;-)

関連する問題