Vergleichung der Buchstaben eines Wortes (Palindrom oder kein Palindrom)
-
Hallo:) ich studiere Software -und Medieninformatik und bin im 1. Semester.
Im Labor soll ein Programm geschrieben werden, welches Buchstaben eines Wortes mit einander vergleicht. Das Programm soll ausgeben, ob es sich hierbei um ein Palindrom oder um kein Palindrom handelt.
Ich hab das soweit mal geschrieben:#include <stdio.h>
#include <stdlib.h>
#include <string.h>char p[20];
char i=0;
char j;int main()
{
char j = strlen((p)-1);printf("Bitte das Wort eingeben: \n\n");
scanf("%s",&p);
for(i=0; i<j; i++, i--)
{
i++;
j--;
}
if (i==j)
{
printf("Das ist ein Palidrom\n");
}
else
{
printf("Das ist kein Palidrom\n");
}
system ("Pause");
return 0;}
kompilieren und starten kein Problem und es werden auch keine Fehler angezeigt. Dennoch, egal welches Wort ich angebe, das Programm schreibt immer:Dies ist ein Palodrom:
Wo ist mein Fehler?
Danke schonmal für eure Hilfe:)
-
vnecked schrieb:
kompilieren und starten kein Problem und es werden auch keine Fehler angezeigt. Dennoch, egal welches Wort ich angebe, das Programm schreibt immer:Dies ist ein Palodrom:
Das wundert dich? Wo bitte prüfst du, ob es ein Palindrom ist.
Wo ist mein Fehler?
Du machst nichts mit dem Wort.
-
Thema hatten wir vor kurzem.
http://www.c-plusplus.net/forum/278200Wenn Du da etwas nicht verstehst, frag
-
Wieso sagst du das so Vorwurfsvoll? Wie gesagt 1. Semester, davor nie in meinem Leben was mit programieren zu tun gehabt.
Und ich mach doch etwas mit dem Wort. Ich vergleiche jeweils 1. mit dem letzten buchstaben und lasse i dann vorwärtszählen und j rückwärtszählen. Ich würde das gerne so hinbekommen. Gibts da denn keine möglichkeit?
-
Tipp: Es heißt Palindrom. Im Threadtitel steht es ja auch einmal fast richtig
.
-
so verbessert:D
-
vnecked schrieb:
Wieso sagst du das so Vorwurfsvoll? Wie gesagt 1. Semester, davor nie in meinem Leben was mit programieren zu tun gehabt.
Und ich mach doch etwas mit dem Wort. Ich vergleiche jeweils 1. mit dem letzten buchstaben und lasse i dann vorwärtszählen und j rückwärtszählen. Ich würde das gerne so hinbekommen. Gibts da denn keine möglichkeit?
Ich schreibe Dir mal was dein Code genau macht.
#include <stdio.h> #include <stdlib.h> #include <string.h> char p[20]; //Reserviere 20*sizeof(char) = 20 byte char i=0; // Reserviere 1*sizeof(int) = 4 byte char j; // Reserviere 1*sizeof(int) = 4 byte int main() { char j = strlen((p)-1); // Reserviere 1*sizeof(char) = 1 byte & weise ihm den // Wert strlen(p) - 1 zu. // Lokales (NICHT GLOBALES(!)) j hat jetzt den wert -1 // da strlen(p) = 0 ist. printf("Bitte das Wort eingeben: \n\n"); scanf("%s",&p); // ACHTUNG könnte für exploit genutzt werden da die länge der // eingegebenden Zeichen nicht überprüft wird. for(i=0; i<j; i++, i--) // setze i = 0; beende wenn i >= j; i++, i-- (?!??!?) { i++; // j--; // } // da i = 0 und j = -1 ist i > j und die Schleife endet sofort if (i==j) // i kann also nie == j sein { printf("Das ist ein Palidrom\n"); } else { printf("Das ist kein Palidrom\n"); } system ("Pause"); return 0; }