fbpx

Problema #3017 – DecimalConverter – Rezolvari PBInfo

de Mihai-Alexandru

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

  • 1n<2641n<264;
  • 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.

#include <bits/stdc++.h>

using namespace std;

int main()
{
    long long int n;
    char ch;
    cin >> ch >> n;
    if(ch == 'b')
    {
        int v[1001];
        int p = 0;
        while(n)
        {
            v[p] = n % 2;
            p++;
            n/=2;
        }
        for(int i = p - 1 ; i >= 0 ; --i)
            cout << v[i];
    }
    else if(ch == 'o')
    {
        int v[1001];
        int p = 0;
        while(n)
        {
            v[p] = n % 8;
            p++;
            n/=8;
        }
        for(int i = p - 1 ; i >= 0 ; --i)
            cout << v[i];
    }
    else
    {
        char v[1001];
        int p = 0;
        while(n)
        {
            if(n % 16 > 9)
            {
                int nr = n % 16 - 9;
                v[p] = (char) (nr + 'A' - 1);
            }
            else
                v[p] = (char) (n % 16 + '0');
            p++;
            n/=16;
        }
        for(int i = p - 1 ; i >= 0 ; --i)
            cout << v[i];
    }
    return 0;
}
Comentarii

S-ar putea sa iti placa