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

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 blindseeker90
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.

AnaTasia: Multumesc mult!
Dactyls: Da..numai recursiv nu-I aia...uite aici : https://pastebin.com/ftwuW3Uj
AnaTasia: Multumesc :D
Dactyls: Np..daca nu ai inteles ce am facut,da-mi pm.
Alte întrebări interesante