Neuling braucht hilfe, Palindromtest


ximulate

Grünschnabel
Hallo,
ich versuche mich daran einen Palindromtest zu schreiben, nur irgendwas funktioniert nicht so wie ich es möchte,
mein programm macht folgendes richtig:
Wandelt großbuchstaben in kleine um, entfernt leerzeichen und sonderzeichen.
schreib das wort/ den satz auch rückwärts
das einzige was nicht richtig funktioniert ist der palindromvergleich wo er die einzelnen buchstaben vergleichen soll,
kann mir da jemand helfen?

hier ist mein programm:

Code:
#include <conio.h>        /* Zugriff auf Bibliotheken */
#include <stdio.h>
#include <stdlib.h>
#include <math.h>


int main()
{
	char i=0;
	int d;
	int p=0;
	int y=0;
	int x=0;
	int l=0;
	int m;
	int laenge = 0;
	char eingabe[255];
	char wort[255];
	char pali[255];
	int j=0;
 
	/* Text einlesen */
	printf("Geben sie ein Wort dem Palindromtest unterzogen werden soll: ");
	
	fgets(eingabe,255,stdin);   /* Eingabe wird eingelesen, stdin beinhaltet die Tastatur */
 
	/* Solange der Text noch nicht zu Ende ist */
	while(eingabe[i] != '\0')
	{
		/* Wenn Zeichen ein Leerzeichen ist */
		if(eingabe[i]<=64 || eingabe[i]>=123)  /* Asci Code 32 ist das Leerzeichen, der rest ?!. */
		{
			i++;
			continue;   /* continue Anweisung springt weiter zum Anfang der Schleife */
		}
		else if(eingabe[i]>=91 && eingabe[i]<=96)
		{
			i++;
			continue;   /* continue Anweisung springt weiter zum Anfang der Schleife */
		}
		else if(eingabe[i]>=65 && eingabe[i]<=90)
		{
			
			printf("%c",eingabe[i]+32);
			wort[j]=eingabe[i]+32;
			j++;
			laenge++;
		}
		/* sonst */
		else
		{
			printf("%c",eingabe[i]);
			wort[j]=eingabe[i];
			j++;
			laenge++;
		}
		i +=1;
	}
	//laenge--;
	l=laenge;
	m=laenge;
	printf("\nDie Lange des Textes ( Anzahl der Buchstaben ) ist %d\n", laenge);

	for(x=0;x<=laenge;x++)
	{
		pali[x]=wort[l];
		l--;
		printf("%c",pali[x]);
	}
	
	
	while(d<=laenge)
	{
		if(pali[d]!=wort[m])
		{
			printf(" \nDas Wort ist kein Palindrom ");
			break;
			
		}
		else if(pali[d]==wort[m])
		{
			y++;
			m--;
		}
		d++;
		
	}
		printf(" \nDas Wort ist ein Palindrom ");
	
	
	getch();
	return 0;
}
 

deepthroat

Erfahrenes Mitglied
Hi.

Du druckst den Text " \nDas Wort ist ein Palindrom " in jedem Fall aus.

Außerdem ist die Variable d nicht initialisiert.

Und du solltest den Text in pali um eine Position zurückschieben.

Zuletzt ist dein Algorithmus noch verbesserungsfähig. Man muss das Wort nicht kopieren, und man muss auch nicht alle Zeichen von vorne bis hinten vergleichen, die Hälfte der Zeichen reicht aus.
 

Forum-Statistiken

Themen
272.351
Beiträge
1.558.596
Mitglieder
187.824
Neuestes Mitglied
Danke!