| |

Se citeşte de la tastatură un număr n, care este reprezentarea numărului în baza q, q [2, 9]. Să se afişeze numărul reprezentat în baza p, p =[2,9]. q şi p se introduc de la tastatură. 7

#include <iostream>

using namespace std;

int main() {

    int n, q, p;

    cin >> n >> q >> p;

    // Convertim din baza q in baza 10

    int n10 = 0;

    int b = 1;

    while (n != 0) {

        int cifra = n % 10;

        n10 += cifra * b;

        b *= q;

        n /= 10;

    }

    // Convertim din baza 10 in baza p

    int resturi[32];

    int i = 0;

    while (n10 != 0) {

        resturi[i] = n10 % p;

        n10 /= p;

        i++;

    }

    if (i == 0) {

        cout << 0 << endl;

    } else {

        for (int j = i-1; j >= 0; j–) {

            cout << resturi[j];

        }

        cout << endl;

    }

    return 0;

}

  1. Se împarte numărul la p și se reține restul.
  2. Se împarte numărul obținut în pasul anterior la p și se reține restul.
  3. Se continuă până când numărul obținut în pasul anterior devine 0.
  4. Cifră cu cifră, de la dreapta la stânga, se afișează resturile obținute la fiecare pas.

Exemplu:

n = 101101 (baza 2) q = 2 p = 5

Pentru a converti în baza 10, folosim algoritmul din exercițiul anterior și obținem n = 45.

Pentru a converti din baza 10 în baza 5, împărțim succesiv numărul la 5 și reținem resturile:

45 : 5 = 9, rest 0 9 : 5 = 1, rest 4 1 : 5 = 0, rest 1

Resturile obținute, citite de la dreapta la stânga, sunt 104, deci n în baza 5 este 104.

Observăm că folosim un vector de dimensiune 32 pentru a reține resturile obținute în al doilea algoritm. Acest lucru este suficient pentru a converti numerele de maxim 32 de cifre.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *