Problem mit ä,ö und ü
-
DrGreenthumb schrieb:
dann hat dein Tipp noch weniger Sinn gemacht :p
Wieso? Ein Editor, der ASCII benutzt, wird für die Umlaute mit hoher Wahrscheinlichkeit die passenden Codes einsetzen. Ich habe nicht geschrieben, dass der Editor nur ASCII beherrschen soll.
-
MFK schrieb:
Ein Editor, der ASCII benutzt, wird für die Umlaute mit hoher Wahrscheinlichkeit die passenden Codes einsetzen.
nein, das hat überhaupt gar nichts mit ASCII zu tun. Er verwendet selbstverständlich längst einen Editor mit ASCII-kompatiblen Zeichensatz. Sonst hätte er vermutlich noch ganz andere Probleme...
Das Problem sind gerade die Zeichen, die nicht von ASCII abgedeckt werden. Da hat sein Editor nämlich einen anderen Zeichensatz als die Dos-Box von Windows.
-
DrGreenthumb schrieb:
Das Problem sind gerade die Zeichen, die nicht von ASCII abgedeckt werden. Da hat sein Editor nämlich einen anderen Zeichensatz als die Dos-Box von Windows.
Du hast Recht. War ein Formulierungsfehler meinerseits. Was ich meinte, war: Er soll einen Editor benutzen, der die gleichen Zeichencodierung wie seine Konsole verwendet.
-
Jetzt erkennt das Programm ä, ö, ü jedoch erkennt es keine Großbuchstaben von Ä,Ö und Ü.
Gibt es da eine Möglichkeit diese einzubinden das diese auch abgefragt werden?
void fktSatzanalyse() { /* Variablendeklaration */ char satz[2000]; int laenge_satz; int anz_vokale = 0; /* Einlesen des Satzes */ cout<<"Bitte geben Sie einen Satz ein: "<<endl; gets(satz); //Einlesen des Satzes (mit Leerzeichen) /* Auslesen der Länge des Satzes */ laenge_satz = strlen(satz); //auslesen der Stringlänge strlwr(satz); //Konvertiert alle Zeichen eines Strings in Kleinbuchstaben /* Auswertung des Strings */ for(int i=0;i < laenge_satz;i++) { switch((unsigned)satz[i]) { case 'a': anz_vokale++; break; case -124: //ä anz_vokale++; break; case 'e': anz_vokale++; break; case 'i': anz_vokale++; break; case 'o': anz_vokale++; break; case -108: //ö anz_vokale++; break; case 'u': anz_vokale++; break; case -127: //ü anz_vokale++; break; case 'y': anz_vokale++; break; } } cout<<anz_vokale<<endl; }
-
Schau mal auf http://unicode.e-workers.de/ansi.php
-
Hab das genze geändert, jedoch werden groß geschriebene Ä,Ö und Ü nicht erkannt. Jeodch warum nicht?
void fktSatzanalyse() { /* Variablendeklaration */ char satz[2000]; int laenge_satz; int anz_vokale = 0; /* Einlesen des Satzes */ cout<<"Bitte geben Sie einen Satz ein: "<<endl; gets(satz); //Einlesen des Satzes (mit Leerzeichen) /* Auslesen der Länge des Satzes */ laenge_satz = strlen(satz); //auslesen der Stringlänge strlwr(satz); //Konvertiert alle Zeichen eines Strings in Kleinbuchstaben /* Auswertung des Strings */ for(int i=0;i < laenge_satz;i++) { switch((unsigned)satz[i]) { case 'a': anz_vokale++; break; case -124: //ä anz_vokale++; break; case -196: //Ä anz_vokale++; break; case 'e': anz_vokale++; break; case 'i': anz_vokale++; break; case 'o': anz_vokale++; break; case -108: //ö anz_vokale++; break; case -214: //Ö anz_vokale++; break; case 'u': anz_vokale++; break; case -127: //ü anz_vokale++; break; case -220: //Ü anz_vokale++; break; case 'y': anz_vokale++; break; } } cout<<anz_vokale<<endl; }
-
Dann wandle den satz zuerst einfach in Kleinbuchstaben um. (LowerCase in Delphi... es gibt in C++ soetwas ähnliches, fällt mir aber gerade nicht ein)
-
@dE_MaStEr: vielleicht weil es
case 'a': case 'o': case 'u': case -124: //ä case -108: //ö case -127: //ü case -114: //Ä case -103: //Ö case -102: //Ü case 'e': case 'i': case 'y': anz_vokale++;
heissen muss?
ps.: lass dieses
anz_vokale++;break;
hinter jedem case weg-es reicht wenn du es 1 mal am ende schreibst
-
user... schrieb:
Dann wandle den satz zuerst einfach in Kleinbuchstaben um. (LowerCase in Delphi... es gibt in C++ soetwas ähnliches, fällt mir aber gerade nicht ein)
Mach ich doch: strlwr(satz); //Konvertiert alle Zeichen eines Strings in Kleinbuchstaben
-
Cpt.Tanga schrieb:
@dE_MaStEr: vielleicht weil es
case 'a': case 'o': case 'u': case -124: //ä case -108: //ö case -127: //ü case -114: //Ä case -103: //Ö case -102: //Ü case 'e': case 'i': case 'y': anz_vokale++;
heissen muss?
ps.: lass dieses
anz_vokale++;break;
hinter jedem case weg-es reicht wenn du es 1 mal am ende schreibst
Danke nun gehts, hab irgendwie warum auch immer die falschen ASCI Zahlen verwendet