Quote Originariamente inviata da Polso9 Visualizza il messaggio
Hai ragione ci sono troppi if annidati, ma purtroppo devo fare tutto "a mano".
Ci sono delle soluzioni per evitare tutti quei if?
Caspita... in pratica è un unrolling di ciclo, adatto per le massime prestazioni vabbè sto scherzando.

La risposta è: esistono superalgoritmi per questo tipo di ricerche, alcuni addirittura basati su rolling hash, string matching parziali e chi più ne ha ne metta.
Ipotizzando invece che sia un esercizietto di tipo accademico, dipende se puoi usare funzioni "furbe" (di libreria) o se devi fare "a mano".

Per "a mano", ipotizzando quindi che si tratti di un "allenamento", devi stabilire quale sia il carattere di separazione, che penso possa essere realisticamente lo spazio.

Quindi farai un ciclo doppio (o meglio due cicli innestati), col primo scansioni dall'inizio alla fine (in realtà fine-lunghezza stringa da cercare, ma lasciamo stare questi dettagli) alla ricerca del primo carattere non-spazio.
Poi verificherai (ciclo interno) se i caratteri successivi sono c o n s o l e e poi la stringa finisce, o c'è uno spazio. Se il riscontro è positivo => hai trovato, altrimenti incrementi la posizione corrente del carattere e continui.

Come puoi intuire (?) farai un sacco di confronti in più, quindi con complessità caso peggiore O(nm), ma per esercizio può andar bene.