[C] Palindrom - wytłumaczenie funkcji

Awatar użytkownika
waliant
Użytkownik
Użytkownik
Posty: 1801
Rejestracja: 9 gru 2010, o 22:16
Płeć: Mężczyzna
Lokalizacja: warszawa
Podziękował: 275 razy
Pomógł: 183 razy

[C] Palindrom - wytłumaczenie funkcji

Post autor: waliant »

witam proszę o odpowiedź na kilka pytań dotyczących następującego kodu:

Kod: Zaznacz cały

int palindrom (char t[])
  {
  int d,u,w,a,b;
  d=0; 			
  u=0;
  w=1;			
  while (t[u] != '\0') 	
	{
	d = d+1; 	
	u = u+1;
	}
  a = 0;		
  b = d - 1;		

  while (a <= b)
	{
	if ( t[a] != t[b] )
		{
		w = 0;		
		}
	a = a + 1;
	b = b - 1;
	}
  return w;
  }

jest to funkcja sprawdzajaca czy podane slowo to palindrom, jednak nie rozumiem jej dzialania: moze ktos wytlumaczyc mniej wiecej po kolei co sie wykonuje i dlaczego tak? Co oznacza

Kod: Zaznacz cały

 t[u] != '\0'
oraz

Kod: Zaznacz cały

t[a] != t[b]
? oraz co daje ten wykrzyknik? Proszę o pomoc
Ostatnio zmieniony 28 maja 2013, o 22:10 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Ser Cubus
Użytkownik
Użytkownik
Posty: 1406
Rejestracja: 6 maja 2012, o 22:46
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 107 razy
Pomógł: 145 razy

[C] Palindrom - wytłumaczenie funkcji

Post autor: Ser Cubus »

!= oznacza negację, tzn zaprzecznie

0 != 5Czy 0 nie jest równe 5? Tak,to prawda, bo 0 nie jest równe 5
a != c, tez prawda
c != c, fałsz

\0, to onzacza null, czyli nic, pusta' wartość'
Adwin_
Użytkownik
Użytkownik
Posty: 26
Rejestracja: 18 maja 2013, o 11:11
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 7 razy
Pomógł: 3 razy

[C] Palindrom - wytłumaczenie funkcji

Post autor: Adwin_ »

W pierwszej pętli while jest sprawdzana długość słowa. Znak oznacza koniec cstringu (w tym momencie zakonczy sie wywolywanie petli). Po wyjściu z while d jest równe długości słowa. Zmiennej b zostaje przypisany indeks ostatniej litery (d-1, bo numerujemy od zera). W drugiej pętli while jest sprawdzane, czy odpowiednie litery są takie same, jęsli nie będą takie same, to zmiennej w zostanie przypisana wart. 0 i taka, też wartość zostanie zwrócona
ODPOWIEDZ