C Console Application Buchstaben zählen
-
Hallo zusammen
Ich will in der Konsole einen Text ausgeben, bei dem danach alle Buchstaben gezählt und herausgeschrieben werden. Also zum Beispiel:
Text: Blubb
B kommt 3 mal vor
l kommt 1 mal vor
u kommt 1 mal vorNun habe ich aber einen Knopf.
Die Zeichen Zählen kann ich eigentlich, aber ich kann im Text nicht auf den zweiten Buchstaben zugreiffen.
Bei mir gibt es nur 5 mal das selbe aus, nämlich:"Das Zeichen b kommt im Text 3 mal vor"
Dies mache ich mit diesem Code:
int countArrayIndex = 0; int countSignIndex = 0; int countSign = 0; char text[100]; char sign[10]; printf("Text: "); gets(text); for(countSignIndex = 0; countSignIndex < strlen(text); countSignIndex++) { sign[0] = text[countArrayIndex]; for(countArrayIndex = 0; countArrayIndex < strlen(text); countArrayIndex++) { if(text[countArrayIndex] == sign[countSignIndex]) { countSign++; } } printf("\nDas Zeichen %s kommt im Text %i Mal vor\n", sign, countSign); }
Wie komme ich zu dem zweiten Buchstaben im Text? Ich blick das irgendwie voll nicht mehr was ich da tue -.-
Danke im vorraus
grüsse Whisky
-
Du benötigst ein Array von Zählvariablen, um jeden Buchstaben getrennt zählen zu können (oder noch besser - mach aus sign ein Array von structs):
typedef struct { char c; int count; } CharCounter; CharCounter sign[xxx]={}; int ccindex=0; for(int p=0;p<strlen(text);++p)//durchlaufe Eingabe { for(int i=0;i<ccindex;++i) //durchsuche 'sign' { if(sign[i].c==text[p]) //gefunden { sign[i].count++; break; } } if(i==ccindex) //noch nicht gefunden { sign[i].c=text[i]; sign[i].count=1; ccindex++; } } for(int i=0;i<ccindex;++i) printf("Buchstabe '%c' wurde %d-mal gefunden\n",sign[i].c,sign[i].count);
(die Größe des Arrays mußt du so wählen, daß alle möglichen Buchstaben reinpassen)
-
meine kristallkugel fluestert mir, dass du an der ETH Zuerich studierst.
eine aehnliche aufgabe habe ich gerade in einem anderen thread gefunden...
seid ihr etwa alle beim gleichen prof?an alle (und auch an CStoll):
Bitte keine Komplettloesungen posten. Hausaufgaben sind zum selber loesen.
-
Ich hab vor kurzem nen ähnlichen Quellcode bei jemandem von der FH Jena gesehen. Mit den selben Bezeichner. Der einzige Unterschied war, das anstatt for-Schleifen while-Schleifen genommen wurden. Ich glaube die Profs ziehen sich ihre Aufgaben aus irgendeiner obskuren Datenbank
-
nö, ich bin bei der BBW in Winterthur X-D
und das wegen der komplettlösung von CStoll, es funktioniert bei mir sowieso nicht (oder ich bin zudoof ^^)
danke trotzdem, ich versuchs mal noch weiter