Mi sono imbattuto in questo programma:
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 a farlo, ma ho un problema in fase di esecuzione: mi fa inserire la prima parola e mi esce un messaggio di errore che il programma ha smesso di funzionare. Qual'è il problema? Grazie mille.

il mio codice:
codice:
#include <iostream>
using namespace std;

void alfasort(char x[]);//ordina alfabeticamente
bool verificaAnagramma(char *a, char *b);//verifica se due parola in ordine alfabetico sono uguali e quindi anagrammi    
void permutaprima(char *a, char *c);//permuta in modo casuale le lettere della parola a e memorizza in c

int main(){
    char *a, *b, *c;
    cout<<"a"<<endl; cin>>a;
    cout<<"b"<<endl; cin>>b;
   
   alfasort(a);//ordina la stringa a in ordine alfabetico
   alfasort(b);//ordina la stringa b in ordine alfabetico
   
    if(!verificaAnagramma(a,b)){//se non sono uno l'anagramma dell'altro
    cout<<"non sono anagrammi quindi permuto";
    permutaprima(a,c); //permuta la stringa a in un nuovo array c
    }
    else{
    cout<<"OK SONO ANAGRAMMI"<<endl;
}
    
   
 system("pause");
 return 0;
 }

void alfasort(char x[]){
     for(int i=0; i<strlen(x);i++){
             if(x[i+1]<x[i])
             x[i]=x[i+1];
             }
}
   
     
bool verificaAnagramma(char *a, char *b){
     
     for(int i=0; i<strlen(a);i++){
             if(a[i]!=b[i])
             return false;
     }
   return true;
}

void permutaprima(char *a, char *c){
     int size=strlen(a);
     for(int i=0; i<size;i++){
             c[i]=a[size-i];
             c[i+2]=a[i];
}
}