Sa se transforme un numar din baza 10 intr-o baza p, 2<=p<=10

Configurare noua (How To)

Situatie

/* Vom împarti succesiv pe x (numarul dat) la p, retinând cifrele din baza p într-un numar xpi, care va fi apoi rasturnat, pentru a obtine numarul xp, vazut care prezentarea în baza p a lui x. Pentru a nu avea probleme în cazul în care prima cifra a lui xpi ar fi 0, folosim o incrementare cu 1 a cifrelor la transformarea x->xpi, respectiv o decrementare la transformarea xpi->xp. */

Solutie

#include<stdio.h>

void main ()

{

int x,xpi,xp,p;

printf (“Dati x in baza 10:”);

scanf (“%d”,&x);

printf(“Dati noua baza p:”);

scanf(“%d”,&p); //un alt mod de a scrie o instructiune for for (xpi=0; x; xpi=10*xpi+x%p+1,x=x/p);

for (xp=0; xpi; xp=10*xp+(xpi-1)%10,xpi=xpi/10);

printf(“Numarul in baza %d este:%d”,p,xp);

getchar();

int var;

scanf(“%d”, var);

}

De remarcat, in acest exemplu, folosirea operatorului “,” in cadrul instructiunii for. De pilda, primul for se interpreteaza astfel:

– se initializeaza xpi cu 0; – cat timp x este diferit de 0 executa: – xpi devine 10*xpi+x%p+1 – x se imparte la p (si se face conversia la int).

Tip solutie

Permanent

Voteaza

(15 din 41 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?