Salve a tutti, mi viene dato un codice in C come il seguente...
#define MATR 623372 /* Ad esempio "623372" */
#defineCIFRE 0987654321
void f( int);
void g( char*, char* );
int main() { f(3);
return 0; }
voidf( int i ) {
char mat[7] = MATR;
char cif[11] = CIFRE;
mat[0]=mat[1]=mat[2]='A'+i-3;
if( mat != '\0' )
g( mat+i, cif );
return;
}
void g( char* mat, char* cif ) {
char* start=NULL;
if( *mat != '\0' ) {
start = cif;
while( *cif != *mat )
cif++;
printf("+ %c%d +", *mat, cif-start);
f( 7 - strlen(mat) );
}
return;
}
e poi mi viene detto che l'output, dati questi dati, è: + 37 ++ 73 ++ 28 +
Qualcuno riesce a spiegarmi a parole cosa fa questo programma?
Evidente è la ricorsione delle due funzione f e g di cui una chiama l'altra, però boh, a me non torna quell'output perchè verrebbero più stampe!