Sempre problemi con le funzione ricorsive...
In questo esercizio son riuscito a fare solo una parte:
"Si scriva in C una funzione ricorsiva (che non deve pertanto fare uso di costrutti iterativi) che legga da input una sequenza di caratteri che termina con l’ingresso del carattere ’\n’, stampi a video la sequenza seguita dalla stessa sequenza in ordine invertito e, inoltre, restituisca in output il numero di caratteri inseriti. Ad esempio, se la sequenza letta fosse ’i’ d’ ’i ’ ’s’ la stampa prodotta sarebbe ’i’ d’ ’i ’ ’s’ ’s’ ’i ’ d’ ’i’ mentre l’output sarebbe 4".
In particolare la stampa dei caratteri è giusta. Non trovo il modo di contare i caratteri inseriti . Ho provato cosi:
- Codice:
#include <stdio.h>
int caratteriric(){
char c;
int occ;
c=getchar();
if(c != '\n'){ **
putchar(c);
occ=1+caratteriric();
putchar(c);
}
return occ;
}
int main() {
caratteriric();
printf("Il numero di caratteri inseriti è:%d\n",caratteriric());
return 0;
}
Che è giusto...cioè come output di caratteri inseriti fornisce effettivamente 4 ma nel punto di codice indicato con ** il compilatore mi dice questo: Variable 'occ' is used uninitialized whenever 'if' condition is false
Ma se all'inizio dichiaro int occ=0 il programma mi fornisce 0 come numero di caratteri inseriti