RSS

L14. Conversia unui numar din baza 10 in baza B

02 Oct

Un numar NB scris in baza B are “cifre” cu valori intre 0 si B-1.

Pentru a obtine reprezentarea numarului N10 in baza B, trebuie sa realizam un sir de impartiri repetate la B.

Fie N10=2490 si B=8

2490 impartit la 8 produce catul 311 si restul 2.

311 impartit la 8 produce catul 38 si restul 7

38 impartit la 8 produce catul 4 si restul 6

4 impartit la 8 produce catul 0 si restul 4

Luam resturile in ordine inversa si obtinem NB=4672.

Algoritmul de mai jos urmareste exact acest tip de calcul. Se observa ca pentru constructia lui NB trebuie sa lipim fiecare rest in fata numarului NB.

citeste N10;

NB=0;

p10=1;

cat timp(N10!=0)

{

NB=NB+P10*(N10%B);

P10=P10*10;

N=N/B;

}

scrie NB.

 
17 Comments

Posted by on 02/10/2012 in C2_1. Algoritmica

 

Tags: ,

17 responses to “L14. Conversia unui numar din baza 10 in baza B

  1. Alex

    14/12/2012 at 23:41

    Buna ziua, foarte bun tutorialul, puteti realiza si o schema logica?

     
  2. mchelariu71

    15/12/2012 at 00:20

    desi elevii invata la 23.41, profesorii pot raspunde la 00.18.
    cam greu cu schema logica. instructiunea CAT TIMP e cu romb , instructiuni pe ramura DA si revenire deasupra testului. se iese pe ramura NU.

    Era simplu. O fi din cauza oboselii…

     
  3. Alex

    15/12/2012 at 00:49

    Multumesc pt info, o seara placuta, o sa incerc sa construiesc ceva.
    Si sunt student🙂

     
  4. Alex

    16/12/2012 at 14:51

    Tot nu ii dau de cap, va rog din suflet, ma puteti ajuta cu o schema logica?😦

     
  5. Alina GHERMAN

    02/08/2013 at 23:48

    Buna ziua, in legatura cu schema logica pe care vad ca elevii dumneavoastra v-o cer as putea sa va sugerez sa creati videouri(sunt videouri de ecran- eu folosesc DesktopActivityRecorder) si apoi puteti sa lucrati cu romburi intr un program in care e usor sa faceti romburi🙂.

     
  6. mchelariu71

    03/08/2013 at 09:15

    Multumesc de idee. Sunt si metode de a crea diagrame online (http://www.gliffy.com/). ar trebui sa fie si variante gratuite.

     
  7. Alin

    14/12/2014 at 00:45

    Bună seara!
    Tocmai am descoperit acest topic și îmi place felul în care răspundeți la întrebări, așadar am și eu două întrebări.
    În următorul program trebuie să transform un număr din baza 10 in baza 16. Problema apare la conversia restului mai mare de 9, denumit “remainder”, în litere precum A, B, C, D, E, F (echivalentul cifrelor 10, 11, 12, 13, 14, respectiv 15) . Cum pot realiza această conversie?
    Printr-o serie de “if”-uri ?

    #include
    #include

    int main()
    {
    int remainder, num, i=0, j;
    char digit[100];
    printf(“insert a number to be converted to base 16: \n”);
    scanf(“%d”, &num);
    while (num!=0)
    {
    remainder=num%16;
    num=num/16;
    digit[i]=remainder;
    if (num==0)
    break;
    i++;
    }
    printf(“The number in base 16 is: “);
    for(j=i; j>=0; j–)
    printf(“%d”, digit[j]);

    printf(“.”);

    return 0;
    }

    Mulțumesc!

     
  8. mchelariu71

    14/12/2014 at 08:45

    O problema interesanta.
    E vorba de inductie matematica. practic, ideile de pornire sunt:
    10….’A’
    11….’B’=’A’+1
    12….’C’=’A’+2
    13…. ‘D’=’A’+3
    Se observa ca ramane constanta diferenta intre dreapta si stanga: mereu ‘A’-10. Atunci (prin inductie), pentru o valoare oarecare R, caracterul corespunzator va fi avea codul R+’A’-10. Observa ca diferenta ramane aceeasi, ‘A’-10.

     
  9. mchelariu71

    14/12/2014 at 08:54

    pentru scrierea in oglinda exista functia strrev (string reverse) care iti intoarce cuvantul.
    #include
    char c[20];
    strcpy(c,”ana are mere”);
    strrev(c);
    cout<< c;

     
  10. Alin

    17/12/2014 at 01:30

    Vă mulțumesc frumos pentru ajutorul acordat. Îmi lipsea următoarea secvență din bucla “while”:

    if (remainder>9){
    remainder=remainder+’A’-10;
    }
    else
    remainder=remainder+’0′;

    Mulțumesc și pentru că mi-ați adus la cunoștință funcția strrev() împreună cu un exemplu.

    Pentru eventuale nelămuriri, vă mai pot contacta? Dacă da, puteți oferi un link sau o adresă de contact?

     
  11. mchelariu71

    17/12/2014 at 07:30

    tot aici, spre folosinta tuturor, numai sa postati intrebarea la un capitol adecvat.

     
  12. david

    21/05/2015 at 19:11

    salut,sunt clasa a 5-a si am o problema cu baze de numeratie:se dau doua nr nat unu in baza b1 si unu b2 . Se cere sa se calculeze produsul lor in b2. Ex: pt 12 in baza 3 si 100 in baza 2 se va afisa 10100(pt ca transformate in baza 10 avem 5 si 4, produsul lor este 20si transformat in b2 obtinem 10100) P.S:mai mult ma incurca cand transform produs in b2. Am incercat tot felul de solutii si nu imi iese si nu stiu de ce😦

     
  13. mchelariu71

    22/05/2015 at 07:20

    transforma ambele valori in baza 10 , fa inmultirea si apoi transforma rezultatul in baza b2. poti folosi apicatia CALCULATOR (run, calc, ENTER; mergi in View/vizualizare si alegi scientific/stiintific si poti lucra in cateva baze de numeratie). Succes!

     
  14. Alexandru

    21/04/2016 at 12:34

    puteti sa scrieti va rog un program deplin pentru : Functie care transforma numarul din baza 10 in alta.Mersi anticipat!

     
  15. georgian2all

    17/05/2016 at 17:25

    O solutie in Python. Usor de citit si inteles.

    nr_baza_10 = int(raw_input(“Introduceti numarul de convertit: “))
    base = int(raw_input(“Baza in care se converteste: “))
    nb=””
    while nr_baza_10 != 0 :
    rest = nr_baza_10 % base
    nr_baza_10 = nr_baza_10 / base
    if rest == 10 :
    nb = nb + “A”
    elif rest == 11 :
    nb = nb + “B”
    elif rest == 12 :
    nb = nb + “C”
    elif rest == 13 :
    nb = nb + “D”
    elif rest == 14 :
    nb = nb + “E”
    elif rest == 15 :
    nb = nb + “F”
    else :
    nb = nb + str(rest)

    nb = nb[::-1]
    print nb

     
  16. Andreea

    21/08/2016 at 22:36

    ce este p10? este o putere? nu imi dau seama, nu am mai lucrat cu baze pana acum. Multumesc anticipat de ajutor.

     
  17. mchelariu71

    22/08/2016 at 15:05

    Este o putere a lui 10. rezultatul se construieste lipind in fata fiecare rest(cifra).

     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: