kompletten string kleinschreiben/leerzeichen entfernen



  • Hallo Leute ich möchte ein Programm schreiben,das ein Wort auf Palindrom überprüft.

    jetzt hab ich das Problem das wenn ich zb:

    Anna <-funktioniert es nicht
    anna <-funktioniert es
    ANNA <-funktioniert es

    Frage:1
    ich hab das versucht hier mit zu beheben

    palindrom[dimension]=toupper(palindrom[dimension]);
    

    leider ohne erfolg
    hat jemand eine idee?

    Frage 2:
    Wenn ich zb ein Satz auf Palindrom prüfen will
    wie bekomme ich die Leerzeichen weg

    Der Freibier Fred

    DerFreibierFred

    #include<stdio.h>
    #include<string.h>
    #include<ctype.h>
    
    #define dimension 20
    void main (void)
    {
    	char palindrom[dimension]={0};
    	char nochmal;
    	int laenge;
    	int halbtext=0;
    	int merker=0;
    	do
    	{
    	printf("Bitte geben sie ein Palindrom ein Max 20 Zeichen\n\n");
    
    	gets(palindrom); 
    
    	laenge=strlen(palindrom);
    
    	halbtext=laenge/2;  
    	laenge=laenge-1; 
    
    	for (int i = 0; i <= halbtext; i++)
        {
    
            if (palindrom[i] != palindrom[laenge])
    		{
    			merker=merker+1;
    		}
            laenge--;
        }
    	if(merker>0)
    	{
    		printf("\nEs ist kein Palindrom");
    	}
    	else
    	{
    		printf("\nEs ist ein Palindrom");
    	}
    
        printf("\n\nMoechten sie das Programm wiederholen Ja=J Nein=N\n\n");
    	scanf("%c",&nochmal);
    	fflush(stdin);
    	nochmal=toupper(nochmal);
    	}
    	while(nochmal=='J'); 
    
    	getchar();
    	fflush(stdin);
    }
    

    Ich danke schon einmal. :xmas2: :xmas1:


  • Mod

    palindrom[dimension]=toupper(palindrom[dimension]);
    

    Das würde auch nur das Zeichen hinter dem letzten Zeichen ändern (sprich: Ist sowieso illegal). Du musst schon alle Buchstaben ändern oder jeweils beim Vergleich beide Vergleichspartner.

    Ansonsten: Hier im Forum gibt's gefühlte 56546434654 Threads zu Palindromen.



  • Zum erste Problem: Zeile 28:

    if (toupper(palindrom[i]) != toupper(palindrom[laenge]))
    

    Das zweite Problem:
    Wenn an der Stelle palindrom[i] ein Leerzeichen ist, musst du nur i erhöhen.
    Für palindrom[laenge] laenge vermindern.

    Das dritte Problem:

    //    printf("Bitte geben sie ein Palindrom ein Max 20 Zeichen\n\n");  // Falsche Anzahl
        printf("Bitte geben sie ein Palindrom mit max 19 Zeichen\n\n");  // 
    //    gets(palindrom);  // Schlecht
       fgets(palindrom,20,stdin);  // Besser, weil nur 19 Zeichen eingelesen werden.
    


  • Ich danke euch 👍


Anmelden zum Antworten