Ti do un aiutino, volutamente non rispettante la traccia.
il codice è il tuo c'è solo una void in più:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define DIM 30
int trova_palindromo(const char string[], int i, int l);
void compatibilizza(char string[], int l);
int main()
{
char stringa[DIM]={0};
char stringa2[DIM]={0};
int lunghezza=0;
printf("\ninserisci una frase o una parola : ");
scanf("%[^\n]s", stringa);
lunghezza = strlen(stringa);
// copio in stringa2 perché la modificherò
// stringa, continuerà a contenere l'input originale
strncpy(stringa2, stringa, DIM);
compatibilizza(stringa2,lunghezza); // modifica stringa2
printf("%s l=%d",stringa2,lunghezza); // per test
printf("\n%d\n\n", trova_palindromo(stringa2, 0, lunghezza - 1));
return 0;
}
int trova_palindromo(const char string[], int i, int l)
{
if(string[i] != string[l])
return 0;
if(i >= l)
return 1;
return trova_palindromo(string, i + 1, l - 1);
}
void compatibilizza(char string[],int l)
{
for (int i=0; i<l; i++)
{
if (isalpha(string[i]) || isdigit(string[i]))
string[i]=tolower(string[i]); // i caratteri alfanumerici tutti minuscoli
else
string[i]=' '; // tutti i caratteri non alfanumerici come spazi
}
}
Per fare in modo che il programma rispetti la traccia data, dovrai invece di sostituire la punteggiatura con gli spazi, eliminare la punteggiatura e gli spazi, formando una nuova stringa ricompattata, ricorda di aggiungere il terminatore....
Una volta scritta la routine, potresti pensare di inglobarla direttamente nella funzione ricorsiva trova_palindromo