From Thundering Mosquito, 1 Week ago, written in C.
Embed
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. #define MAX 100
  5.  
  6. unsigned udekadni(char s[], int osnova)
  7. {
  8.         int i;
  9.         unsigned d=0;
  10.         if (osnova==16)
  11.         {
  12.                 for (i=2; s[i]!='\0'; i++)
  13.                 {
  14.                         if (isdigit(s[i]))
  15.                                 d=d*16+s[i]-'0';
  16.                         else if (s[i]>='A' && s[i]<='F')
  17.                                 d=d*16+s[i]-'A'+10;
  18.                 }
  19.         }
  20.         else if (osnova==8)
  21.         {
  22.                 for(i=1; s[i]!='\0'; i++)
  23.                 {
  24.                         d=d*8+s[i]-'0';
  25.                 }
  26.         }
  27.         else if (osnova==10)
  28.         {
  29.                 for(i=0; s[i]!='\0'; i++)
  30.                 {
  31.                         d=d*10+s[i]-'0';
  32.                 }
  33.         }
  34.  
  35. return d;
  36. }
  37.  
  38. void izdekadne(unsigned n, char s[])
  39. {
  40.         int i,k,j;
  41.         char tmp;
  42.         for(i=0; n; i++)
  43.         {
  44.                 s[i]=(char)(n%2);
  45.                 n/=2;
  46.         }
  47.         for(k=i-1, j=0; j<=k; j++, k--)
  48.         {
  49.                 tmp=s[k];
  50.                 s[k]=s[j];
  51.                 s[j]=tmp;
  52.         }
  53.        
  54.         s[i]='\0';
  55.  
  56. }
  57.  
  58.  
  59. int main ()
  60. {
  61.         char a[MAX], b[MAX], c[MAX];
  62.         char ba[MAX], bb[MAX], bc[MAX];
  63.         int osnova;
  64.         int i;
  65.         unsigned da,db,dc;
  66.        
  67.         scanf("%s%s%s", a, b, c);
  68.         if (a[0]=='0')
  69.         {
  70.                 if(a[1]=='x' || a[1]=='X')
  71.                         osnova=16;
  72.                 else
  73.                         osnova=8;
  74.         }
  75.         else if(a[0]>='1' && a[0]<='9')
  76.                 osnova=10;
  77.                
  78.         da=udekadni(a,osnova);
  79.         izdekadne(da, ba);
  80.  
  81.         if (b[0]=='0')
  82.         {
  83.                 if(b[1]=='x' || b[1]=='X')
  84.                         osnova=16;
  85.                 else
  86.                         osnova=8;
  87.         }
  88.         else if(b[0]>='1' && b[0]<='9')
  89.                 osnova=10;
  90.                
  91.         db=udekadni(b,osnova);
  92.         izdekadne(db, bb);
  93.  
  94.         if (c[0]=='0')
  95.         {
  96.                 if(c[1]=='x' || c[1]=='X')
  97.                         osnova=16;
  98.                 else
  99.                         osnova=8;
  100.         }
  101.         else if (c[0]>='1' && c[0]<='9')
  102.                 osnova=10;
  103.                
  104.         dc=udekadni(c,osnova);
  105.         izdekadne(dc, bc);
  106.        
  107.         for(i=0; ba[i]!='\0'; i++)
  108.                 printf("%c", ba[i]);
  109.        
  110.  
  111.         for(i=0; bb[i]!='\0'; i++)
  112.                 printf("%c", bb[i]);
  113.        
  114.  
  115.         for(i=0; bc[i]!='\0'; i++)
  116.                 printf("%c", bc[i]);
  117.        
  118.        
  119.  
  120.         printf("\n");
  121.        
  122.  
  123. return 0;
  124. }
  125.        
  126.        
  127.        
  128.                
  129.  
  130.  
  131.