ASCII-Code Fehler
-
hi,
hab hier ein programm zum berechnen von palindromen.
problem: ascii-code implementierung ... dient zur prüfung, dass H auch als h gelesen wird. leider kann ich den fehler nicht finden! ....#include <stdio.h>
int check_palindrom (char eingabestring[]) {
int i=0;
int k;// Solange String nicht 0 -> i + 1
while(eingabestring[i] != 0) {i=i+1;
/*
// Und wenn in dem Bereich dann + 32
if ((eingabestring[i] => 65)&&(eingabestring[i] <= 90)) {eingabestring[i] = eingabestring[i]+ 32;
}*/}
// Überprüfung ob Palindrom falsch
for(k=0;k<i;++k){if (eingabestring[k] != eingabestring[i-k])
return 0;
}return 1;
}int main(void) {
char check_1 [] = "Hannah";
char check_2 [] = "Lagerregal";
char check_3 [] = "Reliefpfeiler";
char check_4 [] = "Retsinakanister";
char check_5 [] = "Saippuakivikauppias";printf("%d \n",check_palindrom(check_5));
return 0;
}
-
So als Ansatz vllt.:
int i=0, j=strlen(pal)-1; for( ; i<strlen(pal); ++i, --j) tolower(pal[i]) == tolower(pal[j]);
-
Du schreibst "eingabestring[i] => 65". Richtig wäre aber "eingabestring[i] >= 65".
Die Anweisung i = i+1; in der while gehört unter die If-Bedingung.
"if (eingabestring[k] != eingabestring[i-k])" stimmt auch nicht, da du das \0 am Ende des Strings übersiehst. Also als Indes "i-k-1" nehmen statt "i-k".
-
Du bist nicht zufälligerweise auf der FH in Gummersbach, da muss man die Aufgabe auch immer lösen. Ich hab mal versucht das mit möglichst wenig Zeilen zu schreiben. Braucht zwar mehr Laufzeit, sieht aber doch ganz interessant aus...
#include <stdio.h> int laenge(char []); int main(void) { int i=-1,j=0,k=0,l=0; const int groesse=80; char string1[groesse], string2[groesse]; printf("Geben Sie ein Wort oder einen Satz ein: "); gets(string1); while(++i<groesse) if(string1[i]!=',' && string1[i]!='.' && string1[i]!=' ') string2[j++]=tolower(string1[i]); while(string2[l++] && string2[k]==string2[laenge(string2)-(++k)]); (string2[l-1]) ? printf("Ihre Eingabe war kein Palindrom!!!") : printf("Ihre Eingabe war ein Palindrom!!!"); return 0; } int laenge(char x[]) { int i=0; while(x[i++]); return (i-1); }
-
schaut auch mal hier: http://www.c-plusplus.net/forum/viewtopic-var-t-is-172573-and-start-is-0.html