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;
    
    }
    




  • 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 😞


Anmelden zum Antworten