Consiglio su esercizio

di il
1 risposte

Consiglio su esercizio

Si consideri il seguente rompicapo enigmistico: sono date cinque parole, queste
costituiscono un metanagramma se sono tutte anagrammi tra loro, tranne che per una vocale, che
cambia di parola in parola.
ESEMPIO: cetre, certi, trace, corte, truce.... costituiscono un metanagramma.
Si scriva una funzione C++ che ricevuto come parametro un elenco di 5 parole, restituisca TRUE se le
parole formano un metanagramma e false altrimenti. Inoltre, se le parole costituiscono un
metanagramma, la funzione deve stamparle a video ordinate in base alla vocale che le distingue, dalla a
alla u.
Nell’ESEMPIO, la funzione dovrebbe stampare trace, cetre, certi, corte, truce e poi restituire true.

Salve a tutti...devo fare questo esercizio...volevo un consiglio su come procedere ... ho due idee... la prima è quella di mettere ogni parola in una matrice e poi fare i dovuti controlli.... l'altra è quella di usare i puntatori dichiarando un array di stringhe come di seguito

 char *parole[]={"cetre","certi","trace","corte","truce"};
e poi fare i controlli stringa per stringa....
secondo voi ???

1 Risposte

  • Re: Consiglio su esercizio

    Ciao,
    la mia idea sarebbe quella di fare i seguenti controlli uno dopo l'altro. Se uno fallisce puoi immediatamente restituire FALSE.

    1. tutte le parole hanno la stessa lunghezza
    2. tutte le parole hanno le stesse consonanti
    3. tutte le parole hanno le stesse vocali, a parte una che può variare come vuole.

    Poi potresti salvare in un array i caratteri comuni a tutte le parole e vedere di volta in volta cosa manca... Nel tuo esempio la parte comune è "trec". I completamenti sarebbero quindi "e - i - a - o - u". Poi ti chiedi se questo array è formato dalle cinque vocali. Se la risposta è sì, allora TRUE, altrimenti FALSE.

    Comunque mi sembra un po' complicato... forse ho pensato un po' in modo "overkilling" mentre ci sono metodi migliori!
Devi accedere o registrarti per scrivere nel forum
1 risposte