2016-04-05 19 views
-3

Bir kelimedeki her harfin görüntülenme sayısını saymaya çalışıyorum ve ardından bir harfin ilk yarısını 1 ile işaretlemek için orta, (eğer sözcük tek ise) 2 ve örnek 3.Bir kelimedeki harflerin sıklığı

ile ikinci yarı:

çift sayı: ddaadd 111333

tek sayı olmalıdır: dddaa olmalıdır 12313

Bu kod var bugüne kadar olduğu (Sözcükteki her harfin frekanslarını saymayı başardım; örneğin, ddaadd için benim çıktı: 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

Kodunuzda ilerlemek için bir hata ayıklayıcısını nasıl kullanacağınızı öğrenmeniz gerekebileceği gibi geliyor. İyi bir hata ayıklayıcı ile, program satırınızı istediğiniz gibi çalıştırabilir ve beklediğiniz yerden saptırabilirsiniz. Herhangi bir programlama yapacaksanız bu önemli bir araçtır. Daha fazla okuma: ** [Küçük programlarda hata ayıklama] (http://ericlippert.com/2014/03/05/how-to-debug-small-programs/) ** – NathanOliver

+0

Bu "soruda" sorusu yoktur. – Ceros

+0

@NathanOliver: Cevabım hakkında adil yorum - onu sildim. –

cevap

0

İlk kısım var. Neler olduğunu görmek için hata ayıklayıcısını öğrenmek isteyebilirsiniz. Görsel stüdyo 2015 ve tutorial here'u öneririm.

Tahminimce yapmanız gereken, her iki tarafa da (yansıtılmış gibi) harflerin olması durumunda dizeyi yarıya indirmektir. Daha sonra denemeyi deneyebilirim ama şimdilik, dizinin önünde ve arkasında aynı karakter olup olmadığını kontrol eden bir algoritma yazmayı deneyin. Denemeye ve zorlamaya devam et.

İlgili konular