[C] Buchstaben durchnummerieren

MastaZulu

Ensign
Registriert
Aug. 2002
Beiträge
207
Hi,

wie kann ich in C ein eingegebenes Wort (z.b. Asterix) so durchnummerieren lassen, dass die Buchstaben einen Wert erhalten, wie ihre Stelle im Alphabet in Abhängigkeit des eingegebenen Wortes ist?
Sprich:
Bsp.: Asterix
A = 1, s = 5, t = 6, e = 2, r = 4, i = 3, x = 7

Brauch das für die Verschiebungsmethode (Verschlüsselung).
Es wird dann eine Matrix erstellt, bei denen die Spalten anhand der Buchstabenanzahl des Wortes ermittelt wird (asterix => 7 Spalten) und danach die Spalten so vertauscht werden, dass sie in der richtigen Zählform dastehen (Spalte A = 1, Spalte E = 2, Spalte I = 3 ...)

Danke im Voraus
 
Die ASCII-Zeichen haben alle einen ganz bestimmten Dezimalwert.
Such mal in Netz nach "ASCII Tabelle".

Dort siehst du, dass bspw. das Zeichen 'A' den Dezimalwert 65 und 'm' den Dezimalwert 109 haben.

Somit haben alle darstellbaren Zeichen bereits eine definierte "Nummer".

Ich hoffe das ist das was du meinst, und du dir somit Arbeit sparen kannst :).
 
Zuerst, da du anscheinend Groß- und Kleinbuchstaben gleich behandelst, solltest du den String in Uppercase umwandeln. Und zwar wie folgt:

Code:
#include <ctype.h>

char s[20] = "Asterix";
int l = strlen( s);
for( int i = 0; i != l; ++i) {
  s[i] = toupper( (unsigned char)s[i]);
}

Danach musst du den String sortieren. Ob du dabei das eingebaute qsort benutzt (dessen Syntax ich auch erst nachschlagen müsste...deshalb kein ad hoc Beispiel) oder dir etwas eigenes implementierst (Bubblesort, etc...), bleibt dir überlassen. Evtl. musst du dir dann ein Mapping (^= Zuordnung) erstellen, welcher Buchstabe in welchem Feld das Arrays gelandet ist.

Soweit verständlich? ;)
 
Zurück
Oben