Możesz dynamicznie alokować wielkość tablicy reszty[] na podstawie wielkości wprowadzonej liczby. Zobacz jak to można zrobić:
void zamianaNaDziesietny(int x)
{
int licznik=0;
//int reszty[100];
int *reszty; // deklaracja wskaznika na pierwszy element tablicy
int rozmiar; // rozmiar tablicy
if (x==0 || x==1) rozmiar=1;
else if (x==2 || x==3) rozmiar=2;
else if (x>=4 && x<8) rozmiar=3;
else if (x>=8 && x<16) rozmiar=4;
else if (x>=16 && x<32) rozmiar=5;
else if (x>=32 && x<64) rozmiar=6;
// i kolejne warunki w podobny sposob
reszty = new int[rozmiar]; //dynamiczna alokacja tablicy reszty[]
int i=0;
while(x>0)
{
i++;
reszty[i]=x%2;
x=x/2;
cout<<reszty[i];
licznik++;
}
cout<<endl;
cout<<licznik<<endl;
for(int i=licznik; i>0; i--)
{
cout<<reszty[i];
}
delete []reszty; //usunięcie tablicy reszty[]
}
Odwracanie reszt w twoim programie działa - podajesz jedynie niewłaściwe warunki do wykonania pętli for.
Sprawdź działanie programu dla takiej pętli for:
for(int i=licznik; i>0; i--)
{
cout<<reszty[i];
}