Informatică, întrebare adresată de Istefan, 9 ani în urmă

Cerința
Se dă un număr n scris în baza b. Să se afișeze scrierea acestuia în baza c.

Date de intrare
Programul citește de la tastatură numerele n, b și c separate prin spații.

Date de ieșire
Programul va afișa pe ecran scrierea numărului n în baza c.

Restricții și precizări
numărul n are cel mult nouă cifre
2 ≤ b,c ≤10

Exemplu
Intrare

2013 4 7
Ieșire

252
Explicație
2013(4) se scrie 252(7)

Răspunsuri la întrebare

Răspuns de blindseeker90
1
#include <iostream>
#include <cmath>
using namespace std;

int baza_b_in_10(int n,int b){
   
    int i,d,rez=0;
    int exp=0;
    while(n>0){
       
        d=n%10;
        rez+=d*pow(b,exp);
        exp++;
        n=n/10;
    }
    return rez;
}


int baza_10_in_b(int n,int b){
   
    int temp=n,rez=0,i,length;
    length=0;
    //determina lungimea numarului in baza b
    //vazand care este cel mai mare exponent
    while(temp>0){
        temp=temp/b;
        length++;   
    }
   
    for(i=0;i<length;i++){
        //catul impartirilor la puterile bazei
        //pornind de la cel mai mare exponent
        //se adauga la numar in formatul bazei
        rez=rez*10+(n/pow(b,length-1-i));
        n=n%int(pow(b,length-1-i));

       
    }
    return rez;
}




int main(){
    //b baza in care este numarul n
    //c baza in care se transforma numarul n
    //folosim pas intermediar transformarea in baza 10
    int n,b,c;
    cin>>n>>b>>c;
    int base10=baza_b_in_10(n,b);
    int base_c=baza_10_in_b(base10,c);
    cout<<base_c;
    return 0;
}

Alte întrebări interesante