Problema con verifica di anagramma tra due lettere.

di il
6 risposte

Problema con verifica di anagramma tra due lettere.

Salve a tutti. Devo fare questa cosa in una funzione per poi richiamarla nel main. Io avevo pensato di dichiarare due parole e una frequenza per poi paragonarle attraverso un for. Tuttavia per problemi che ho nel main per la tipologia di esercizio assegnato, devo dichiarare solo la frequenza delle lettere. Da solo non ci sarei mai arrivato e quindi ho visto la soluzione del prof ma non l'ho capita :S:

bool anagramma (int f[2][26]){
for (int i=0;i<26;i++)
if(f[0]!=f[1])
return false;
return true;
}

in effetti non è difficile come concetto, ma non ho capito quello 0 e quell'1 ...che cosa indicherebbero? IL fatto che si tratta di due parole diverse?
Grazie in anticipo

6 Risposte

  • Re: Problema con verifica di anagramma tra due lettere.

    Ma cosa dovrebbe fare la funzione?
    A me sembra che analizzi il conteggio delle singole lettere e quindi ritorna false se c'è un conteggio diverso.
    Magari ti manca il pezzo di codice che genera i conteggi...
  • Re: Problema con verifica di anagramma tra due lettere.

    In pratica effettua conteggi...conta le lettere delle due parole. Se il numero delle varie lettere della prima è diverso dal numero delle varie lettere della seconda, allora return false, ecco. Così funziona bene, però non so se per queste prove il prof mette sul suo sito soluzioni difficili visto che le fa lui oppure è così e basta. Sinceramente io non ci sarei mai arrivato e pur guardandola nn la capisco
  • Re: Problema con verifica di anagramma tra due lettere.

    Quella è una tabella delle frequenze.

    Ha 2 righe (per le 2 parole) e 26 colonne (per i 26 caratterI)

    0 e 1 indicano la prima e la seconda riga (ovvero la prima e la seconda parola)
  • Re: Problema con verifica di anagramma tra due lettere.

    Allora la funzione che hai postato semplicemente verifica se i conteggi delle lettere corrispondono.
    f[0] contiene il conteggio dell'i-esima lettera (suppongo i=0 indica A, i=1 indica B ...) nella prima stringa
    f[1] contiene il conteggio dell'i-esima lettera nella seconda stringa
    Quindi il for non fa altro che verificare su tutte le lettere che ci sia lo stesso conteggio, alla prima lettera che ha due conteggi diversi ritorna false.
    Se tutti i conteggi sono uguali ritorna true.
    Quello che ti manca, a mio avviso, per completare l'esercizio è lo scrivere una funzione che dato in input una stringa esegua il conteggio delle lettere.
  • Re: Problema con verifica di anagramma tra due lettere.

    Sì quello sta nel main...grazie ora ho capito...anche se da solo a questa soluzione così "stringata" non penso ci sarei mai arrivato e ho l'esame tra una settimana
  • Re: Problema con verifica di anagramma tra due lettere.

    Beh ... ci vuole un po' di esperienza e un po' di "sangue freddo". Nel senso che non ti devi buttare a creare codice perché hai poco tempo, ma sfruttarne un po' per pensare alla migliore soluzione.

    La cosa da chiedersi era ... "quando due parole sono anagrammi una dell'altra"?
Devi accedere o registrarti per scrivere nel forum
6 risposte