Перевод из десятичной системы в рефлексный код

Необходимо сделать перевод как в Коде Грея, но только не для двоичной системы, а, например, для троичной (по идее тут разве что будет увеличиваться цифра в зависимости от системы счисления в цикле). Ну, собственно, я вообще тупой, набросал тут вот немного:

#include <iostream>

using namespace std;

int main()
{
    int a[16],b,c,d=0,i,k,o,y,t=0,p=0,f=2;
    cout<<"Введите число в десятичной системе"<<endl;
    cin>>b;
    c=0;
    k=0;
    y=0;
    i=1;
    a[i]=0;
    while (b>=0)
    {
    while ((c<=5) && (b>=0))
    {
      
      a[0]=c;
      c++;
      b--;
       cout<<a[0];
    }
    
    
    while ((c>0) && (b>=0))
    {
      c--;
      a[0]=c;
      
      b--;
         cout<<a[0];
    }
     
    }
    cout<<endl;
    cout<<a[0];
    cout<<endl;
   

    return 0;
}

Получается тут я ищу только самую правую цифру в переведённом коде. А вот как всё это зациклить вообще без понятия...