printЗанятие 1

printПреобразование чисел

Общий алгоритм строки, содержащей представление числа в системе счисления по основанию `b`, в целое значение:
int str2int(const char s[], int b)
{ int r=0,zn=1;
  if(*s=='-') // обрабатываем знак числа
  { zn=-1;
    ++s;
  }
  while(*s)
  { r=r*b+(*s>'9'?toupper(*s)-'A'+10:*s-'0');
    ++s;
  }
  return zn*r;
}

Обратное преобразование целого числа в строку немного сложнее:
void int2str(int r, int b, char s[])
{ 
  int i=0, zn=1, c;
  if(r<0) // обрабатываем знак 
  { r=-r;
    zn=-1;
  }
  while(r)
  { 
    c=r%b+'0';
    if(c>'9')
      c+='A'-'0'-10;
    s[i++]=c;
    r/=b;
  }
  if(i==0)
    s[i++]='0';
  if(zn<0)
    s[i++]='-';
  s[i]=0;
  strrev(s);
}
loading