Volevo sapere da voi se poteva andare. Il testo è il seguente:
"Scrivere una funzione ricorsiva che
• legga in input una sequenza di caratteri alfabetici di lunghezza arbitraria, che termina quando viene immesso un carattere non alfabetico, e che
• stampi ogni carattere minuscolo e stampi invece ogni carattere maiuscolo solo se `e preceduto da un carattere minuscolo.
• restituisca il numero di elementi scartati
Se ad esempio la sequenza fosse b g R u C E F j P 9 la funzione dovrebbe stampare b g R u C j P e restituire 2."
Il problema è sempre il solito delle discussioni precedenti e come sempre mi sono appoggiato sul main per leggere il primo carattere che diventerà il carattere precedente nella ricorsione.
Però, per stamparlo l'unico modo che ho trovato è quello di farlo nel main. Ecco:
- Codice:
#include <stdio.h>
int sequenzaalfabeticaric(char prev){
char c;
scanf("%c",&c);
if((c>='a' && c<='z')||(c>='A' && c<='Z')){
if((c>='a' && c<='z')){
printf("%c",c);
return 0+sequenzaalfabeticaric(c);
}
else if((c>='A' && c<='Z')&&(prev>='a' && prev<='z')){
printf("%c",c);
return 0+sequenzaalfabeticaric(c);
}
else return 1+sequenzaalfabeticaric(c);
}
else{
printf("Sequenza modificata: \n");
return 0;
}
}
int main() {
char c;
scanf("%c",&c);
printf("%c",c); //problema di stampa del primo valore
printf("Il numero di elementi scartati è:%d\n",sequenzaalfabeticaric(c));
return 0;
}