8-1 : EXTRA : Array di caratteri ( stringhe ) Vers . 4.3 – Febbraio 2022
g ) Data una stringa s costruire le stringhe s _ cons , s _ voc , s _ num e s _ altro contenenti rispettivamente tutte le consonanti , tutte le vocali , tutte le cifre numeriche o tutti gli altri caratteri presenti nella stringa di partenza s
ALGORITMO SpacchettaStringa MAXDIM 50 PROCEDURA main ( )
s : ARRAY [ MAXDIM ] DI CHAR s _ cons , s _ voc , s _ num , s _ altro : ARRAY [ MAXDIM ] DI CHAR j , k , l , m : INT
INIZIO
// stringa assegnata // stringhe estratte // indici stringhe estratte
/* leggo la stringa s di partenza rispettando il vincolo imposto da MAXDIM */ RIPETI
Leggi ( s ) FINCHE ’ ( Lunghezza ( s ) ≥1 ) AND ( Lunghezza ( s ) ≤ MAXDIM )
/* inizializzazione indici stringhe estratte */ j � 1 k � 1 l � 1 m � 1
PER i � 1 A Lunghezza ( s ) ESEGUI /* il carattere corrente è una lettera dell ’ alfabeto qualsiasi minuscola o maiuscola */ SE (( s [ i ] ≤ 65 ) AND ( s [ i ] <= 90 )) OR (( s [ i ] ≥ 97 ) AND ( s [ i ] ≤ 122 ))
ALLORA
SE ( Minuscola ( s [ i ])=' a ') OR ( Minuscola ( s [ i ])=' e ') OR ( Minuscola ( s [ i ])=' i ') OR ( Minuscola ( s [ i ])=' o ') OR ( Minuscola ( s [ i ])=' u ') ALLORA /* il carattere corrente è una vocale minuscola oppure maiuscola */ s _ voc [ j ] � s [ i ] j � j + 1
ALTRIMENTI /* il carattere corrente è una consonante minuscola oppure maiuscola */ s _ cons [ k ] � s [ i ] k � k + 1
FINE SE ALTRIMENTI
SE (( s [ i ] ≤ 48 ) AND ( s [ i ] <= 57 ))
ALLORA /* il carattere corrente è una cifra numerica */ s _ num [ l ] � s [ i ] l � l + 1
ALTRIMENTI /* il carattere corrente è una qualsiasi altro carattere della tavola ASCII */ s _ altro [ m ] � s [ i ] m� m + 1
FINE SE FINE SE i � i + 1 FINE PER
FINE
Autore : Rio Chierego ( email : riochierego @ libero . it - sito web : www . riochierego . it ) Pag . 13