Na wstępie przeproszęgdyż prosze o gotowe rozwiązanie. Jestem zdesperowany, jeśli łamie zasady to zrozumiem krytykę i usuniecie tematu.

Na końcu dam gotowy program, jaki już posiadam.
Realizuje on konwersje w każdą stronę miedzy systemami liczbowymi z zakresu od 2 do 36. I wszystko działa.
Dodatkowo jest zaimplementowana została detekcja błędów i sprawdzanie czy wpisano cyfrę a nie cokolwiek innego.

Prezentuje program:
Kod
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
bool Koniec()
{
string s;
cout << "\nSkonczyc przeliczena ? (T = TAK)";
cin >> s;
return ((s != "") && (toupper(s[0]) == 'T'));
}
int NaLiczbe(const char *n)
{
int i;
for(i=0; isdigit(*n); n++)
  i = i *10 +(*n - '0');
if(*n)
{
  printf("\nZle dane. Obliczenia przerwane. Jako liczbe do zamiany wpisano znak.\nWprowadz liczbe z zakresu 0 - 9!!\nWybierz N i ponownie wprowadz dane.\n");

}
return i;
}

int NaLiczbe2(const char *n)
{
int i;
for(i=0; isdigit(*n); n++)
  i = i *10 +(*n - '0');
if(*n)
{
  printf("\nZle dane. Obliczenia przerwane. Jako podstawe wpisano znak.\nWprowadz liczbe z zakresu 2 - 10!!\nWybierz N i ponownie wprowadz dane.\n");

}
return i;
}
int main(void)
{
string s;
unsigned long c,L,p;
char  buf[256] = {0};
do
{
  cout <<
  "\n==========================================================================
====\n"
  "      Zamian liczby decymalnej na zapis w systemie pozycyjnym o podstawie p"
  "\n==========================================================================
=====\n"
  "(C)2005 Siemiatkowska Dorota, Slomiany Jaroslaw, Szczuplinski Tomasz SWPW Plock"
  "\n==========================================================================
=====\n"
  "\nPodaj liczbe do zamiany = ";
  cin >> buf;
  cin.ignore(1024, '\n');
  if(!(L = NaLiczbe(buf)))
  {
   continue;
  }
  cout << "\nPodaj podstawe z zakresu (2..10) = ";
  cin >> buf;
  cin.ignore(1024, '\n');
  if(!(p = NaLiczbe2(buf)))
  {
   continue;
  }
  else
   if ((p<2)|(p>10)) {printf("\n\nZle dane. Obliczenia przerwane. Podano podstawe nie zawarta w przedziale 2 - 10\n"
  "Wybierz N i ponownie wprowadz dane.\n"); continue; }

  cout << "\n" << L << "(10) = ";
  s = "";
  do
  {
   c = L % p;
   s = char(c + 48) + s;
   L = L / p;
  } while(L != 0);
  cout << s << "(" << p << ")\n\n";
} while(!Koniec());
return 0;
}


A teraz napisze, o co bardzo Was Prosze.

O takie zmodyfikowanie w/w kodu, aby możliwa była konwersja jak do tej pory jednak wzbogacona jeszcze o konwersje u1 i u2 do i z w/w formatów kodowania.
Jednak l i p są sprawdzane czy są znakiem. To daje ze nie można zamienić -10 w dec na np. liczbę bin.
Chciałbym wzbogacić program, aby pozwalał:
Liczbę ujemna zamienić na dowolna, i dowolna na ujemna.
I do tego jest mi właśnie potrzebna u1 i u2. Oczywiście zamiana z u1 na u1 i na odwrót tez jest potrzebna.
Nie wiem czy wszystko odpowiednio opisałem.
Jeśli będą pytania odpowiem na nie.
Pozdrawiam.