ragazzi siete mitici.. grazie infinite. Oggi ho finito il mio dato ke mi era venuto un colpo di genio, ma vedrò anke i vostri nn vi preoccupate, grazie ankora e scusate se vi ho fatto perdere tempo.. vi posto il mio 
codice:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#define mx 10 // dimensione massima della parola
#define dim 256 // dimensione dell'alfabeto
/*
genera la statistica dei caratteri di stringa[] (frequenza) in freq[] e
restituisce la lunghezza della stringa
*/
int fact(char stringa[], int freq[])
{
int l;
for(int i=0; i<dim; i++) // azzera le frequenze
freq[i]=0;
for(l=0; stringa[l]!='\0'; l++) // conta le occorrenze dei car. in stringa[]
freq[stringa[l]]++;
return l; // l e' la lunghezza di stringa[]
}
/*
aggiunge un carattere in posizione n nell'anagramma a prelevandolo
dal pool di caratteri disponibili descritto da freq[]
*/
void calcola(int freq[], char anagramma[], int lung, int n, int &x)
{
int c;
if(n<lung) // altri caratteri da aggiungere?
{
for(c=0; c<dim; c++) // controlla tutti i caratteri
{
if(freq[c]>0) // il carattere e' disponibile?
{
anagramma[n]=c; // lo appendo all'anagramma
freq[c]--;
calcola(freq, anagramma, lung, n+1, x); // prova ad aggiungere un altro carattere
freq[c]++;
}
}
}
else
{ // anagramma trovato
anagramma[n]='\0'; // aggiungi terminatore di stringa
printf(anagramma);
printf("%c",179);
x=x+lung+1; // stampa l'anagramma
if (x>55)
{
cout<<"\n";
x=0;
}
}
}
void main()
{
int x, len;
char parola[mx]; // parola iniziale
char anagramma[mx]; // anagramma
int frequenza[dim]; // vettore di occorrenze
printf("Anagrammi.\n");
printf("Introduci una parola: ");
gets(parola);
len=fact(parola, frequenza); // calcola la freq. dei simboli dell'alfabeto
printf("Anagrammi possibili: \n\n");
x=0; // parte grafica [quel minimo ke c'e!]
calcola(frequenza, anagramma, len, 0, x); // stampa tutti gli anagrammi
getchar();
}