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).
Leave A Comment?