Ciao a tutti.

Ho da fare un esercizio: il problema mi da una matrice 2x21, dove nella prima riga ci sono le lettere dell'alfabeto, e nella seconda riga le lettere con cui sostituire la lettera data.

Devo scrivere una funzione che, dato un file di testo, mi scrive su un altro file le stesse parole con le lettere convertite. Ad esempio, vedendo la matrice sottostante, dovrei sostituire la parola "cane" con "udsg".

codice:
char x[][COLONNE] = {{'a','b','c','d','e','f','g','h','i','l','m','n','o','p','q','r','s','t','u','v','z'},                             
                                        {'d','v','u','l','g','q','c','p','t','e','n','s','m','z','o','h','b','a','f','r','i'}}; 

void converti(char in[], char out[]) 
{ 
   fstream orig, mod; 
   orig.open(in, ios::in); 
   mod.open(out, ios::out); 
   while (orig.get(c)) 
   { 
      for (int i=0; i<COLONNE; i++) if (c==x[0][i]) c=x[1][i]; 
      mod.put(c); 
   } 
   orig.close(); 
   mod.close(); 
}
Tuttavia quando eseguo il programma, alcune lettere me le converte giustamente, altre me le converte senza un ordine ben definito... Ho scritto male qualcosa secondo voi?

Grazie mille in anticipo, mi salvate