Ammetto di essere stato un po' criptico, ma non mi pare così complesso...
Scorri il primo vettore = usa un for per ciclare su ciascun elemento del primo vettore
Usa il valore che ne ricavi come indice per il secondo = ad ogni iterazione vai a considerare il valore dell'elemento del primo vettore su cui ti trovi; usa questo per accedere al corrispondente elemento del secondo vettore
l'elemento corrispondente ad esso andrà incrementato di uno = non so come renderlo più semplice...
Esempio:
codice:
#define ARRSIZE(arr) (sizeof(arr)/sizeof(*(arr)))
int vettoreInput[50];
int vettoreProb[100]={0};
/* ... riempimento vettoreInput ... */
/* Calcolo vettore probabilità */
int i, j, maxVI=0;
for(i=0;i<ARRSIZE(vettoreInput);i++)
{
/* Evitiamo di fare danni */
if(vettoreInput[i]>=ARRSIZE(vettoreProb))
{
/* il vettore probabilità è troppo piccolo, gestisci l'errore in qualche maniera (visualizza un qualche messaggio di errore, ...) */
break;
}
vettoreProb[vettoreInput[i]]++;
maxVI=max(maxVI, vettoreInput[i]);
}
for(i=0; i<=maxVI; i++)
{
printf("%d: ",i);
for(j=0; j<vettoreProb[i]; j++)
putchar('*');
putchar('\n');
}
Naturalmente se l'insieme dei possibili valori di vettoreInput è particolarmente sparso risulta più conveniente una struttura dati più flessibile, come l'hashtable.