Mi sono imbattuto in questo esercizio:

Si scriva in C++ un programma completo opportunamente modularizzato in funzioni che, lette da input due parole di uguale lunghezza, verifichi se sono l’una anagramma dell’altra. Due parole sono una l’anagramma dell’altra se contengono le stesse lettere ma in ordine diverso. Esempio: La parola locandiera è un anagramma della parola calendario.
Se le due parole non sono una l’anagramma dell’altra, si consideri la prima inserita da input e se ne costruisca un anagramma permutando in modo casuale le lettere di cui è composta (non importa se la parola ottenuta non è di senso compiuto). Esempio: se da input sono state inserite le parole casa e sala, si consideri la parola casa e si permutino in modo casuale le sue lettere. Dopo questo procedimento si potrebbe ad esempio ottenere la parola asca.

Ho provato ad abbozzare le principali funzioni (per ora senza main..):
codice:
bool anagramma(char a[], int dim, chat b[], int dim){
                       for (int i=0; i<dim; i++){
                                                       for(int j=0; j<dim; j++)
                                                       if(a[i]==b[j])
                                                       return true;
                                      return false;
                                                       if(a[i]==b[i])
                                                       return false;
  }//for
}


void permuta(char a[], int dim){
                                            char c[];
                                            for(int i=0; a[i]!='\0'; i++){
                                            int casuale=1+rand()%dim;
                                            a[i]=c[casuale];
  }//for
}
Ho dubbi sulla prima funzione riguardo a:
è il modo giusto per confrontare le lettere della parola contenuta nell'array a con quelle di b? Il for innestato permette di fare questo? cioè mi sa che va evitato di confrontare elemento per elemento come nel caso in cui si volesse verificare se la parola dell'array a fosse uguale a quella di b..mentre in questo caso vogliamo vedere solo se sono anagrammi!

Sulla seconda funzione:
Va bene per mescolare le lettere dell'array a e metterle in un nuovo array c in modo casuale?
Il for è esatto?

In questi casi è meglio usare string o char?