Informatică, întrebare adresată de boysmeetbts, 8 ani în urmă

Cerința
Se dă un număr natural în baza 16. Să se transforme acest număr în baza 10.

Date de intrare
Programul citește de la tastatură numărul n în baza 16.

Date de ieșire
Programul va afișa pe ecran numărul n transformat în baza 10.

Restricții și precizări
reprezentarea în baza 10 a numărului dat este mai mică decât 2.000.000.000
Cifrele în baza 16 sunt : 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

In C

Răspunsuri la întrebare

Răspuns de boiustef
0

poate ti-a fi de folos si varianta c++

eu am generalizat conditia.  Numai dupa ce am rezolvat am observat ca se da un numar natural in baza 16, adica contine numai cifre arabe.  eu am considerat ca numarul dat contine toate cifrele sistemului hexazecimal de numeratie  (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)    Daca se doreste modificarea programului se va face, ca nu e greu

#include <iostream>

#include <string.h>

using namespace std;

int main()

{

   char n[11];

   cout << "introdu nr hexazecimal: ";

   cin.getline(n,11);

   int len=strlen(n);

   unsigned long long int h=0, z=1, coef;

   for (int i=len-1; i>=0; --i)

       {

           if (n[i]=='0') coef=0;

           if (n[i]=='1') coef=1;

           if (n[i]=='2') coef=2;

           if (n[i]=='3') coef=3;

           if (n[i]=='4') coef=4;

           if (n[i]=='5') coef=5;

           if (n[i]=='6') coef=6;

           if (n[i]=='7') coef=7;

           if (n[i]=='8') coef=8;

           if (n[i]=='9') coef=9;

           if (n[i]=='A') coef=10;

           if (n[i]=='B') coef=11;

           if (n[i]=='C') coef=12;

           if (n[i]=='D') coef=13;

           if (n[i]=='E') coef=14;

           if (n[i]=='F') coef=15;

           h=h+coef*z;

           z=z*16;

       }

   cout << h << endl;

   return 0;

}


boiustef: codul propus face treaba si daca se introduc numai cifre arabe...
Alte întrebări interesante