Witam chcę abyście mi pomogli zrozumieć dlaczego ten kod zadziałał tak a nie inaczej, chodzi mi o dwa przypadki kiedy najpierw coś wypisuje a później zwiększam i na odwrót.
W tym przypadku wypisze mi znaki alfanumeryczne począwszy od t[0] i je dobrze policzy od 0
bool P( char * s )
{
char * t = s;
int ile = 0;
if( *t )
{
while( *t++ != '\0')
{
(isalnum(*(t-1)) )? printf("%c",*(t-1)) && ile++ : 0;
}
return (( ile == 0 ) ? 0 : 1 );
}
return 0;
}
Zaś w tym przypadku nie wypisze pierwszego znaku alfanumerycznego t[0], ale policzy dobrze tyle że od 1
bool P( char * s )
{
char * t = s;
int ile = 0;
if( *t )
{
while( *t++ != '\0')
{
(isalnum(*(t-1)) )? ile++ && printf("%c %i\n",*(t-1),ile): 0;
}
return (( ile == 0 ) ? 0 : 1 );
}
return 0;
}
Wyniki dla testu:
acs$%^ qd13 4
a 0
c 1
s 2
q 3
d 4
1 5
3 6
4 7
c 2
s 3
q 4
d 5
1 6
3 7
4 8
Wiem, że jakiś laik ze mnie, ale będę wdzięczny!