Palindrom ( Wortvergleich)
-
Yo, das Prog soll
eine Eingabe z.B.: 123SSAAA rückwärts ausgeben, also: AAASS321;
nun soll es auch erkennen, wann ein Programm z.B.
ein sogenanntes Palindrom ist: ANNA, LOL, AABBAA; also in Beide Richtungen
gleich geschrieben;
Irgendwo ist der Wurm drin^^.
Bitte helft#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 200 int main(){ char *schwul = malloc(sizeof(char)*N); printf("Machen Sie Ihre Eingabe:\n"); fgets(schwul,N,stdin); schwul[strlen(schwul)-1]=0; int laenge = strlen(schwul)-1; char *p; p = schwul + sizeof(char)*laenge; int counter = 0; while(laenge>=0){ printf("%c", *(p--)); if( *schwul == *p ){ counter++; } *(schwul+1); laenge--; } if(counter==laenge){ printf("Es handelt sich um ein Palindrom!\n"); } system("Pause"); return 0; }
-
hatte schon so ein Gefühl:
if(counter==laenge+2)...
dann gehts, versteh grad aber nicht genau wo die +2 bei laenge herkommen...
einmal nehm ich doch das return schon raus bei schwul, und zweitens ist doch bei länge das \0 schon drin oder wird das übergangen oder wie?
-
halt funtzt doch nicht, laenge wird ja runtergezählt
-
Was willst du da mit dem schwulen malloc?
Gucke er dadda:int is_palindrom ( char* s ) { char *u = s + strlen(s)-1; while ( u >= s ) if ( *s++ != *u-- ) return 0; return 1; } int main() { if ( is_palindrom ( "LOL" ) ) puts("Ja, Bruder!"); return 0; }
-
also elegant geht anders, aber wenns denn so sein soll:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 200 int main(){ char *schwul = malloc(sizeof(char)*N); printf("Machen Sie Ihre Eingabe:\n"); fgets(schwul,N,stdin); schwul[strlen(schwul)-1]=0; int laenge = strlen(schwul); char *p; p = schwul + laenge - 1; int counter = 0; while(laenge>0){ if( *schwul == *p-- ) counter++; schwul++; laenge--; } if(schwul-counter-1==p) printf("Es handelt sich um ein Palindrom!\n"); system("Pause"); return 0; }