014
26.01.2005, 10:08 Uhr
Gölti
|
Vielleicht weiß ja einer noch was, ich weiß absolut nicht wie das gehen soll, dass er ß richtig in ss umwandelt.
Vielen Dank für eure Hilfe.
Code: |
#include <iostream> #include <conio.h> #include <ctype.h>
/* Umlaute laut ASCII Tabelle 'Ä' ASCII Code: -114 'Ö' ASCII Code: -103 'Ü' ASCII Code: -102 'ä' ASCII Code: -124 'ö' ASCII Code: -108 'ü' ASCII Code: -127 'ß' ASCII Code: -31 */
void machUmlauteWeg(char *mitUml, char *ohneUml) { while (*mitUml!=0) {
// Den aktuellen Buchstaben des Wortes mitUmlauten ansehen: switch (*mitUml) {
// Umlaute ersetzen case -114: *ohneUml = 'A'; break; case -103: *ohneUml = 'O'; break; case -102: *ohneUml = 'U'; break; case -124: *ohneUml = 'a'; break; case -108: *ohneUml = 'o'; break; case -127: *ohneUml = 'u'; break; case -31: *ohneUml = 's'; ohneUml++; *ohneUml = 's'; break;
// Wenn kein Umlaut vorhanden ist, wird der Buchstabe einfach übernommen default: *ohneUml = *mitUml; }
// Der nächste Buchstabe wird überprüft mitUml++; ohneUml++; } *ohneUml=0; }
int compareStr(char *a, char *b){ while (*a!=0 && *b!=0) { // Vergleich if (*a==0) return -1; if (*b==0) return 1; char ca = tolower(*a); // tolower, wandelt Großbuchstaben in Kleinbuchstaben um char cb = tolower(*b); if (ca<cb) return 1; if (ca>cb) return -1; a++; b++; } // Bis hierhin sind beide Zeichenketten gleich, allerdings muss (wenn nötig) noch das Ende des einen Wortes überprüft werden int lenA=strlen(a);int lenB=strlen(b); if(a>b) return -1; else if(a<b) return 1; else return 0; // Beide Zeichenketten sind gleich
} int main(void) { const int elemente = 50; char str1[elemente]; char str2[elemente];
cout << "\nProgramm zur Anordnung der Woerter";
cout << "\n\nBitte geben Sie die erste Zeichenkette ein (max. 50 Zeichen): "; cin.getline(str1, elemente); cout << endl;
// An dieser Stelle werden die Umlaute zu normalen Buchstaben gewandelt char str1ohneUmlaute[elemente] = { 0 }; machUmlauteWeg(str1, str1ohneUmlaute); cout << "\nDie erste Zeichenkette ohne Umlaute ist: " << str1ohneUmlaute << endl;
cout << "\nBitte geben Sie die erste Zeichenkette ein (max. 50 Zeichen): "; cin.getline(str2, elemente); cout << endl;
// An dieser Stelle werden die Umlaute zu normalen Buchstaben gewandelt char str2ohneUmlaute[elemente] = { 0 }; machUmlauteWeg(str2, str2ohneUmlaute); cout << "\nDie zweite Zeichenkette ohne Umlaute ist: " << str2ohneUmlaute << endl;
int ergebnis = compareStr(str1ohneUmlaute, str2ohneUmlaute);
if(ergebnis == 1) { cout << endl; cout << "Wert 1" << endl; cout << "String 1 ist im Duden vor String 2!" << endl; } else if(ergebnis == 0) { cout << endl; cout << "Wert 0" << endl; cout << "Die beiden Zeichenketten sind identisch!" << endl; } else if(ergebnis == -1) { cout << endl; cout << "Wert -1" << endl; cout << "String 2 ist im Duden vor String 1!" << endl; }
getch(); return 1; }
|
|