Rezolvare completă PbInfo #3017 DecimalConverter

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.

Cum e corect?

cout < "As la info"; cout << "As la info"; cout >> "As la info";

Felicitări! Poți mai mult?

Avem sute de probleme pentru tine, fiecare cu explicații ușor de înțeles.

Greșit, dar nu-i bai!

Antrenează-te cu sutele de probleme pe care ți le-am pregătit. Îți explicăm fiecare problemă în parte.

Rezolvare

Iată rezolvarea de 100 de puncte pentru problema DecimalConverter:

#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;
}

Atenție

Enunțurile afișate pe această pagină aparțin exclusiv site-ului PbInfo. Astfel, pentru ștergerea conținutului, puteți să ne contactați la adresa Adresa de email.

Rezolvarea problemei #3017 DecimalConverter

Pe această pagină găsești rezolvarea de 100 de puncte pentru problema #3017 DecimalConverter de pe PbInfo.ro. Atenție: nu încurajăm copiatul codului! Totuși, credem cu tărie că analizarea unei soluții corecte este o metodă foarte ușoară de a învăța informatică, astfel că oferim sursele pentru peste 1500 de probleme de pe platforma PbInfo.ro.

Pentru rezolvări PbInfo de la peste 1500 de probleme, vă invităm să intrați pe site-ul nostru!