logicamente, visto che uso il C(o Java), e il C++ lo conosco pochino, ti potrei dire, considerando il fatto che il numero di asterischi può essere dinamico(cioè puoi inserire 7 numeri tipo: 1, 5,1000000,1230 etc... se non ho capito male) di farti una matrice[(MAX +1),7] dove 7 è il numero di COLONNE(e di numeri che devi immettere) e MAX + 1(RIGHE) con MAX il massimo numero immesso
(ricerca del massimo è una semplice funzione lineare)

dopodiche:
uso un codice C che mi è + familiare cmq lo puoi trasportare in C++
codice:
#define MAXIMM 7    //il numero massimo di numeri da immettere

int numeri[MAXIMM]... /*qui inserisci i numeri immessi è scritto male ma si capisce*/
int max = ...    /*qui ci metti il massimo tra i numeri inseriti prima nel 
vettore lo trovi utilizzando una banale funzione di ricerca del massimo*/

int matrice[max+1][MAXIMM];

int i, j, count;    //indici
/*inserisco nell'ultima riga della matrice i numeri immessi*/
for(j = 0; j< MAXIMM;j++){
  matrice[max][i] = numeri[i];
}
/*per ogni colonna inserisco partendo da indice di riga i = (max -1) gli asterischi*/
for(j = 0; j<MAXIMM;j++){
     /*contatore di asterischi che devo memorizzare
     in questa var di appoggio perchè verra decrementato nel ciclo sotto*/
     count =  matrice[max][j];   
     i = (max - 1);                    //indice di riga che vedo dal basso all'alto
     while((count > 0) && (i >= 0)){
       matrice[i][j] = '*';
       i--;count--;
     }
}
/*stampa*/
for(i = 0; i<(max+1);i++){
  for(j = 0; j<MAXIMM;i++){
       if(i = max)  //stampo i numeri finali
           printf("%d ", matrice[i][j]);
       else    //stampo il char
          printf("%c ", matrice[i][j]);
   }
}

scusami se è in C... ma la logica dovrebbe funzionare...

ciauz