il problema richiede oltre a prendere in input la stringa, di contare i caratteri diversi all'interno di essa...allora ho pensato :master: di ordinare i caratteri (richiesto già nell'esercizio) e farci un raggruppamento, così conto i gruppi di caratteri uguali e quindi i caratteri diversi ...il codice messo così funziona ...però ora mi chiedo: sono leciti quei
lim-1 , voglio dire, essendo un vettore di caratteri, nel momento in cui do l'invio per prendere in input la stringa, il vettore assume cm ultimi due caratteri '\n'... è così oppure sto facendo un ragionamento che nn ci azzecca na mazza ? Naturalmente x capire quello che sto a dì è necessario leggere il codice ...quindi buona lettura ...e buon esaurimento !

codice:
 
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#define MAXLINE 10

void ordina(char* line, int maxline);
int conteggio(char* line, int maxline);

int main()
{
 int diversi, n;
 char frase[MAXLINE];
   cout << "Inserisci la stringa" << endl;
   cin.getline(frase,sizeof(frase));
   n= strlen(frase);
   cout << "La stringa e' lunga " << n << " caratteri" << endl;
   diversi=conteggio(frase,n);
   cout << "La stringa e' formata da " << diversi << " caratteri diversi" << endl;
   cout << "La stringa iniziale e' " << frase << endl;
      system("PAUSE");
      return 0;
}

void ordina(char stringa[], int lim)
{
 int E,F,MAX,j,scambio;

 E=lim-1;
 F=1;

 while (F==1)
      {
        F=0;
        MAX=E;

        for (j=0;j<=MAX-1;j++)
          {
             if (stringa[j] > stringa[j+1])
             {
              scambio=stringa[j];
              stringa[j]=stringa[j+1];
              stringa[j+1]=scambio;
              E=j;
              F=1;
             }
          }
     }
     }

int conteggio(char stringa[],int lim)
{
 char prec;
 int conta,j;
 prec=stringa[1];
 conta=1;
 ordina (stringa, lim);
 for (j=1;j<=lim-1;j++)
     {
      if (prec!=stringa[j])
        ++conta;
        else
        prec=stringa[j];
      }
      return conta;
 }