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;
}