Frage

Ich arbeite ein Schulprojekt einen Huffman-Code auf Text zu implementieren. Der erste Teil erfordert natürlich auf dem Text eine Frequenzanalyse. Gibt es einen besseren Weg, abgesehen von einem riesigen Schalter und eine Reihe von Zählern, es zu tun?

ie:

int[] counters

for(int i = 0; i <inString.length(); i++)
{
switch(inString[i])
    case 'A':
    counters[0]++;
.
.
. 

Ich möchte alle alphanumerischen Zeichen und Interpunktion tun. Ich bin mit c ++.

War es hilfreich?

Lösung

Warum nicht:

int counters[256] = {0};
for(int i = 0; i <inString.length(); i++)
    counters[inString[i]]++;
}


std::cout << "Count occurences of \'a\'" << counters['a'] << std::endl;

Andere Tipps

Sie können ein Array von Zeichen indiziert verwenden:

int counters[256];
for (int i = 0; i < inString.length(); i++) {
    counters[(unsigned char)inString[i]]++;
}

Sie wollen auch Ihre counters Array auf Null, natürlich initialisieren.

eine Karte mit scheint vollständig anwendbar:

map<char,int> chcount;
for(int i=0; i<inString.length(); i++){
  t=inString[i];
  chcount[i]? chcount[i]++ : chcount[i]=1;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top