2016-04-05 19 views
-3

単語の各文字の出現回数を数え、文字の出現の前半を1でマークしようとしています。中間(単語が奇数の場合) 2、例えば3単語内の文字の頻度

と後半:

が偶数:ddaaddあるべき111333

奇数:dddaaは12313

なければならない。これは、これまで私が持っているコードであります(私は単語のすべての文字の頻度を数えた; fo dldaddの場合、私の出力は:442244):

#include <iostream> 
#include <iomanip> 
#include <map> 
#include <string> 
#include <cstdlib> 

using namespace std; 

int main() 
{ 

    map <char, int> letters,letters2; 
    string cuvant; 
    cout<<"Scrie un cuvant"<<endl; 
    getline(cin, cuvant); 

for ( int i=0; i< cuvant.size(); ++i) 
{ 
    letters[cuvant[i]]++; 
} 

for ( int i=0; i< cuvant.size(); ++i) 
{ 
    cout<<letters[cuvant[i]]; 
} 


} 
+3

デバッガを使用してコードをステップ実行する方法を学ぶ必要があるようです。良いデバッガを使用すると、プログラムを1行ずつ実行し、どこからずれているかを確認することができます。これはプログラミングをする場合に不可欠なツールです。詳しい読書:** [小さなプログラムをデバッグする方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver

+0

この "質問" – Ceros

+0

@ NathanOliver:私の答えに対する公正なコメント - 私はそれを削除しました。 –

答えて

0

あなたは最初の部分を持っています。あなたは何が起こっているかを見るためにデバッガを学ぶことができます。私はビジュアルスタジオ2015とtutorial hereをお勧めします。

私の推測では、両側に文字がある場合は、文字列が半分にカットされている必要があります(その鏡のように)。後で試してみることもできますが、文字列の前と後ろに同じ文字があるかどうかを調べるアルゴリズムを作成してみてください。試し続けて押してください。

関連する問題