Zakładając, że ktoś chce wprowadzić dane do tablicy, i tych elementów będzie MAKSYMALNIE 50 stosując podejście statycznego alokowania zmiennych musiałbyś zaalokować tablicę o rozmiarze 50.
Jeśli zrobisz to dynamicznie będziesz mógł ją zaalokować dokładnie taką, jaką potrzebujesz.
Przykład:
//Opcja pierwsza
cout << "Podaj ile chcesz wprowadzić elementów: ";
int ile;
cin >> ile;
int tab[50]
for(int i=0; i<ile; i++)
cin >> tab[i];
//Opcja druga
cout << "Podaj ile chcesz wprowadzic elementow: ";
int ile;
cin >> ile;
int * tab = new int[ile];
for(int i=0; i<ile; i++)
cin >> tab[i]
W pierwszym przypadku zawsze alokujesz 50 * wielkosc inta bajtow pamieci.
W drugim dokladnie tyle ile trzeba.