Va rog rezolvata in c++ si pascal, multumesc.
Se dă numărul natural n, n<65000, și numărul natural b de o cifră. Să se scrie reprezentarea numărului n în baza b. Să se scrie varianta recursivă.
Răspunsuri la întrebare
Răspuns de
2
C++
#include <iostream>
#include <string>
using namespace std;
string conversie(int n,int baza,int p){
string s;
char c;
int cat;
//daca a mai ramas ceva din numar
if(n>0){
//catul este cifra care apare in sir
cat=n/p;
//convertim cifra la char
c='0'+cat;
//la string se adauga caracterul si prin recursivitate restul conversiei
s=s+c+conversie(n%p,baza,p/baza);
return s;
}
//daca n este egal cu 0, s-a terminat conversia
else{
return "";
}
}
int main(){
string rezultat;
long p=1,n,cat;
int baza;
cout<<"Introduceti numarul si baza(o cifra):";
cin>>n>>baza;
//cat timp puterea bazei este mai mic decat n
//mareste puterea bazei
while(p*baza<=n){
p=p*baza;
}
rezultat=conversie(n,baza,p);
cout<<rezultat;
return 0;
}
Pascal
program conversie_baza;
function conversie(n,b,p:integer):string;
var s:string;
c:char;
cat:integer;
begin
c:='0';
if n>0 then
begin
cat:=n div p;
while(cat>0) do
begin
inc(c);
dec(cat);
end;
s:=s+c+conversie(n MOD p,b,p div b);
end
else
s:='';
conversie:=s;
end;
var rezultat:string;
p,n,cat,baza:integer;
begin
p:=1;
writeln('Introduceti numarul si baza(o cifra)');
read(n);
read(baza);
while p*baza<=n do
p:=p*baza;
rezultat:=conversie(n,baza,p);
writeln('Rezultat:',rezultat);
end.
#include <iostream>
#include <string>
using namespace std;
string conversie(int n,int baza,int p){
string s;
char c;
int cat;
//daca a mai ramas ceva din numar
if(n>0){
//catul este cifra care apare in sir
cat=n/p;
//convertim cifra la char
c='0'+cat;
//la string se adauga caracterul si prin recursivitate restul conversiei
s=s+c+conversie(n%p,baza,p/baza);
return s;
}
//daca n este egal cu 0, s-a terminat conversia
else{
return "";
}
}
int main(){
string rezultat;
long p=1,n,cat;
int baza;
cout<<"Introduceti numarul si baza(o cifra):";
cin>>n>>baza;
//cat timp puterea bazei este mai mic decat n
//mareste puterea bazei
while(p*baza<=n){
p=p*baza;
}
rezultat=conversie(n,baza,p);
cout<<rezultat;
return 0;
}
Pascal
program conversie_baza;
function conversie(n,b,p:integer):string;
var s:string;
c:char;
cat:integer;
begin
c:='0';
if n>0 then
begin
cat:=n div p;
while(cat>0) do
begin
inc(c);
dec(cat);
end;
s:=s+c+conversie(n MOD p,b,p div b);
end
else
s:='';
conversie:=s;
end;
var rezultat:string;
p,n,cat,baza:integer;
begin
p:=1;
writeln('Introduceti numarul si baza(o cifra)');
read(n);
read(baza);
while p*baza<=n do
p:=p*baza;
rezultat:=conversie(n,baza,p);
writeln('Rezultat:',rezultat);
end.
AnaTasia:
Multumesc mult!
Alte întrebări interesante
Engleza,
8 ani în urmă
Informatică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă