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 gleichs[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 ] ) ); }