String Elemente miteinander vergleichen



  • Hallo zusammen,

    ich habe gerade ein Problem mit dieser Aufgabe:"Schreiben Sie eine Funktion int hasDoubled(char* s) die 1 zurückgibt,
    wenn in der Zeichenkette s ein verdoppeltes Zeichen vorkommt, andernfalls 0
    Z.B. „Anna“ sollte 1, „Ana“ 0 zurückliefern. „Lara“ hat zwar zwei „a“ aber das „a“
    ist nicht verdoppelt, also sollte für „Lara“ 0 zurückgegeben werden"

    ich weiß einfach nicht wie ich die einzelnen Elemente von dem String miteinander vergleichen soll.

    Hier sind meine Fortschritte bis jetzt:

    #include <stdio.h>
    
    int hasdoubled(char *s){
    	int i=0;
    	while(i<15){
    		if(s[i]=='n' && s[i+1]=='n'){
    			printf("ja");
    			return 1;
    		}else{
    			i++;
    		}
    
    	}
    	printf("nein");
    	return 0;
    }
    int main(void){
    	hasdoubled("Anna");
    	return 0;
    }
    

    Nun weiß ich leider nicht wie ich die einzelnen Buchstaben vergleich kann, ohne sie vorher zu definieren.



  • sartl schrieb:

    Nun weiß ich leider nicht wie ich die einzelnen Buchstaben vergleich kann, ohne sie vorher zu definieren.

    Was definieren? Du brauchst nur checken ob es ein s[i] gibt das gleich s[i+1] ist.

    #include <stddef.h>
    #include <stdio.h>
    
    #define sizeof_array( arr ) ( sizeof( arr ) / sizeof( *arr ) )
    
    int hasDoubled( char const /* <- gratulation an Aufgabensteller */ * str )
    {
    	for( ; *str; ++str )
    		if( str[ 0 ] == str[ 1 ] )
    			return 1;
    	return 0;
    }
    
    int main( void )
    {
    	char const * tests[] = { "Anna", "Ana", "Lara", "Susii", "Aaanabelle" };
    	size_t i = 0;
    
    	for( ; i < sizeof_array( tests ); ++i )
    		printf( "\"%s\" = %d\n", tests[ i ], hasDoubled( tests[ i ] ) );
    }
    

Anmelden zum Antworten