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
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;
}
#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
Matematică,
8 ani în urmă
Limba română,
8 ani în urmă
Informatică,
9 ani în urmă
Informatică,
9 ani în urmă
Matematică,
9 ani în urmă
Franceza,
9 ani în urmă