funkcja sprawdzająca czy dany wyraz to palindrom

0
int czy_palindrom(char t[])
{
    int i=0;
    printf("%d \n",i);
    int dlugosc = ilosc(t);
    int tmp = (ilosc(t)-1);
    
    
    for (i=0;i<=dlugosc-1;i++, tmp--)
    {
        if (t[i]!=t[tmp])
            return 1;
//        printf("indeks %d wartosc %c \n",i,t[i]);
//        printf("tmp %d  wartosc %c\n",tmp,t[tmp]);
    }
    return 0;
}

tak jak w temacie funkcja ma zwracać wartość 1 jeśli nie jest palindromem i 0 jeśli jest palindromem korzystam z drugiej funkcji ilość która zwraca ilość znaków w stringu, problem w tym że funkcja cały czas zwraca wartość 1 za pomoc i uwagi z góry dziękuję! : )

1
  1. Twoje ilosc() to strlen(), nie wynajduj koła na nowo...
  2. Po co przeglądasz cały string skoro wystarczy dość do połowy skoro lecisz od obu końców... Powinieneś przerwać pętlę kiedy 'i' oraz 'tmp' się zejdą (dla nieparzystych słów) albo rozminą (dla parzystych).
  3. Nie bierzesz pod uwagę nieparzystych palindromów typu kajak
  4. Źle nazwałeś funkcję bo spodziewałbym się ze jeśli czy_palindrom() zwraca 1 to znaczy że coś jednak jest palindromem (1 -> true, 0 -> false)
  5. Użyj debugera.
0
int czy_palindrom(char t[])
{
    int i=0;
    printf("%d \n",i);
    int dlugosc = strlen(t);
    int tmp = (strlen(t)-1);

    if (dlugosc%2==1)
    {for (i=0;i==tmp;i++,tmp--)
            {if (t[i]!=t[tmp])
                return 0;}}
    {for (i=0;i>tmp;i++,tmp--)
            {if (t[i]!=t[tmp])
                return 0;}}

    return 1;
}

dobra kombinuje kombinuje ale cały czas zwraca wartość 1 jakieś sugestie?

1
#include <cstdio>
#include <cstring>
using namespace std;

int czy_palindrom(const char* t)
{
    int i=0;
    int dlugosc = strlen(t);
    int tmp = dlugosc-1;
    for (i=0;i<=tmp;i++,tmp--){
    	if (t[i]!=t[tmp]){
                  return 0;
    	}
    }
    return 1;
}

int main() {
	printf("%d",czy_palindrom("ala"));
	printf("%d",czy_palindrom("kajak"));
	printf("%d",czy_palindrom("kobylamamalybok"));
	printf("%d",czy_palindrom("palindrom"));
	return 0;
}

http://ideone.com/MUq6h5

0

ok załapałem temat do zamknięcia :d i chyba w tym przypadku 'dlugosc' nie jest już potrzebna :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1