# PBinfo #3017 – DecimalConverter – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Se dă n un număr natural și un caracter c, care poate fi b, o sau h. Transformați numărul în baza dată de c, astfel:



c
Baza


b
Bin


o
Oct


h
Hex


Date de intrare
Programul citește de la tastatură numărul caracterul c, iar apoi numărul n.

Date de ieșire
Programul va afișa pe ecran valoarea cerută.

Restricții și precizări

\(1 ≤ n < {2}^{64}\);
Cifrele cu valori mai mari decât 9 se vor scrie cu litere mari.

Exemplu:
Intrare

b
5
Ieșire

101
Explicație
Numărul 5 în baza doi este scris 101.

## Cod sursă C++

```cpp
#include <iostream>
using ull = unsigned long long;
char c;
ull n;
void decToBin(ull n)
{
    bool BinNum[64];
    int i=0;
    while(n>0)
    {
        BinNum[i]=n%2;
        n=n/2;
        i++;
    }
    for(int j=i-1; j>=0; j--) std::cout<<BinNum[j];
}
void decToOct(ull n)
{
    int OctNum[100];
    int i=0;
    while(n!=0)
    {
        OctNum[i]=n%8;
        n/=8;
        i++;
    }
    for(int j=i-1; j>=0; j--) std::cout<<OctNum[j];
}
void decToHex(ull n)
{
    char HexNum[100];
    int i=0, temp=0;
    while(n!=0)
    {
        temp=0;
        temp=n%16;
        if(temp<10) HexNum[i]=temp+48;
        else HexNum[i]=temp+55;
        i++;
        n/=16;
    }
    for(int j=i-1; j>=0; j--) std::cout<<HexNum[j];
}
int main()
{
	std::cin>>c>>n;
	switch(c)
	{
    case 'b':
        decToBin(n);
        break;
    case 'o':
        decToOct(n);
        break;
    case 'h':
        decToHex(n);
        break;
	}
	return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/3017)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/3017/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-3017/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
