2017-10-04 18 views
-1

Ich habe Probleme mit der Anzahl der Buchstaben in einem String zu zählen und sie in einem Diagramm wie diesesBuchstaben in einem Satz zu zählen und einen * für jeden Buchstaben Anzeige

a: *** 
b: * 
c: ** 
etc... 

Anzeigen Ich habe einen Code, der anzeigt, wie lang ist die ganze Zeichenfolge in jedem Buchstaben des Graphen. Hier ist was ich bisher habe.

int main(){ 
    char Str[]="TheQuickBrownFoxJumpedOverTheLazyDog"; 
    int j, occurrences[26], Letter=97, index=0; 
    while(Letter>96, Letter<123){ 
     printf("%c: ", Letter); 
     Letter++; 
    for(j=0; j<=occurrences[index]; j++){ 
     printf("*"); 
    } 
    printf("\n"); 
    } 
} 

Das ist mein Ausgang:

a: ************************************* 
b: ************************************* 
c: ************************************* 
d: ************************************* 
e: ************************************* 
f: ************************************* 
g: ************************************* 
h: ************************************* 
i: ************************************* 
j: ************************************* 
k: ************************************* 
l: ************************************* 
m: ************************************* 
n: ************************************* 
o: ************************************* 
p: ************************************* 
q: ************************************* 
r: ************************************* 
s: ************************************* 
t: ************************************* 
u: ************************************* 
v: ************************************* 
w: ************************************* 
x: ************************************* 
y: ************************************* 
z: ************************************* 

Was kann ich tun, um dieses Problem beheben? Ich bin ziemlich verloren, da unser Lehrer mir nicht geholfen hat, das herauszufinden. Ich habe mich auch ein bisschen auf der Website umgesehen und kann Codes finden, die die Zeichen zählen, aber ich kann nicht herausfinden, wie ich es bekommen kann, um dann die Sternchen auszudrucken.

+0

Was möchten Sie mit "Zahlen zählen" sagen? – YaatSuka

+0

Ihr Zustand ist falsch. – pablo1977

+0

Du deklarierst "Vorkommen", stell es nicht ein und benutze es danach ??? Es gibt keine Logik in Ihrem Code – YaatSuka

Antwort

-1

Hier ist ein Beispiel, es tut es für alle ASCII Zeichen. Versuchen Sie herauszufinden, wie Sie es nur für den gewünschten Bereich tun können.

#include <stdio.h> 
#include <string.h> 

int main() { 
    char* string = "TheQuickBrownFoxJumpedOverTheLazyDog"; 
    size_t len = strlen(string); 
    size_t occurences[128] = {0}; 
    for (size_t i = 0; i < len; ++i) { 
    ++occurences[string[i]]; 
    } 

    for (unsigned char i = 0; i < 128; ++i) { 
    printf("%c: ", i); 
    for (size_t j = 0; j < occurences[i]; ++j) { 
     printf("%c", '*'); 
    } 
    printf("\n"); 
    } 

    return 0; 
} 
+1

Vielen Dank, ich habe es funktioniert genau wie ich wollte! –

0

Ersetzen Sie die while-Schleife durch eine for-Schleife, die den String bis zum Ende durchläuft ('\ 0').

for (char* ptr = Str; *ptr; ++ptr) 

Das Array muss 26 * 2 Elemente sein halten, wenn Sie Fall berücksichtigen müssen. Wenn nicht berücksichtigt Fall 26 Elemente würden ausreichen, und Sie können die else if Bedingung unten ignorieren.

Initialisieren des Arrays auf 0.

int occurrences[26*2] = {0}; 

der Index aus der Zeichenfolge innerhalb der for Schleife inkrementiert wird bekommen.

if (*ptr >= 'A' && *ptr <= 'Z') { index = *ptr - 'A'; } 
else if (*ptr >= 'a' && *ptr <= 'z') { index = *ptr - 'a' + 26; } 

Dann erhöhen Sie die occurrences Array auf dem berechneten Index.

++occurrences[index]; 

Während die * Druck, denken Sie daran, dass das Vorkommen Array wie so die Alphabet Positionen hält -

ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 
Verwandte Themen