The problem would appear to be that you're not sorting your entire list, only half of it.
look in the loop here
for (int i = 0; i <l; i++)
{
big = x[0];
for (int j = 0; j <l; j++)
{
if (x[j] > big)
{
big = x[j];
old = j;
}
}
s.push(big);
x[old] = x[l-1];
l--;
}
At the same time as incrementing i, you're decreasing 'l' - which means the for loop stops when you're halfway through the list (the two values converge in the middle).
there are all sorts of ways of doing sorts, but i suggest you leave your 'l' variable alone - also, your inner loop probably wants to start at j = i rather than j=0 (Similarly, your 'big' number probably wants to start at x[i] )