2016-03-31 3 views
0

私はC++で文字を取り込んで印刷するプログラムを書いています。だから、何かのように:別々の行から文字を抽出し、それらと何かするにはどうすればよいですか?

AAAAA

B BBBBB

C CCCCC

私は、入力からすべての文字を通過するためのループを使用しましたsubstrを使って各文字を抽出し、次に文字を取り除く。 ここでは最初の垂直位置(太字)に何個のAがあるのか​​を数える必要があります。この場合1つで、縦の列にAの割合を計算します。 どうすればいいですか?私は混乱しており、何か助けに感謝しています!

ありがとうございます!

これはコードです:

while(s < numberL) 
{ 
    sp = word; 
    s++ 
    for (int i = 0; i < correct.length(); i++) 
    { 
     if(answer.at(i) == correct.at(i)) 
     { 
      word = answer.substr(i,1); 
      cout << word; 
     } 
     if (answer.at(i) != correct.at(i) && answer.at(i) != '?') 
     { 
      word = answer.substr(i,1); 
      cout << word; 
     } 
     if (answer.at(i) == '?') 
     { 
      word = answer.substr(i,1); 
      cout << word; 
     } 

    } 
    } 
+0

お試しいただいたコードをお知らせください。 – Logicrat

+0

あなたは[informed](http://stackoverflow.com/help/badges/2600/informed)バッジを既に手に入れましたが、私はあなたが[The Tour](http://stackoverflow.com/tour)を読むことに深刻な疑念を持っています特に**実用的で詳細な質問への回答を得てください**)と[ヘルプページ](http://stackoverflow.com/help/on-topic)を徹底的に参照してください。 –

+0

すみません。私はコードを追加しました! – samar

答えて

0

まあ、これを使用する最も簡単な方法は、文字周波数配列を使用することです。基本的には、サイズ26の整数配列(または必要とする数値型の数に応じて任意の数値型)を作成し、各文字の数を追跡するだけです。

あなたの例を見てみましょう。

各行を読み取ったら、最初の文字を取り、大文字Aを0、Bを1、Cを2などに変換するために、c - 65を実行します。配列にインデックスを付けて、あなたが手に入れる文字の頻度を増やしてください。残りの行を出力します。

すべての出力を終えたら、アレイに戻り、検出されたパーセンテージを出力します。

+0

ありがとうございます!私はそれを試してみましょう! – samar

関連する問題