Перевод из 16 в 10 систему счисления - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Вот рабочий код программы, он работает только до 8 символов. А если больше 8 символов, то перевод уже неверный. Как решить эту проблему. Заранее, спасибо.
#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 
#include <math.h> 
#include <stdio.h> 

int HEX_TO_DEC(char st[10]) 
{ 
int i, s, k, p; 
s = 0; 
p = strlen(st) - 1; 
for (i = 0; st[i] != '\0'; i++) 
{ 
switch (toupper(st[i])) 
{ 
case 'A': 
k = 10; 
break; 
case 'B': 
k = 11; 
break; 
case 'C': 
k = 12; 
break; 
case 'D': 
k = 13; 
break; 
case 'E': 
k = 14; 
break; 
case 'F': 
k = 15; 
break; 
case '1': 
k = 1; 
break; 
case '2': 
k = 2; 
break; 
case '3': 
k = 3; 
break; 
case '4': 
k = 4; 
break; 
case '5': 
k = 5; 
break; 
case '6': 
k = 6; 
break; 
case '7': 
k = 7; 
break; 
case '8': 
k = 8; 
break; 
case '9': 
k = 9; 
break; 
case '0': 
k = 0; 
break; 
} 
s = s + k * pow(16, p); 
p--; 
} 
printf("%d", s) ; 
return 0; 
} 
 
int main() 
{ 
char s[10]; 
char ch; 
printf ( "Plese, enter string: \n"); 
scanf("%s", s) ; 
printf ("\nRezultant: \n"); 
HEX_TO_DEC(s); 
scanf (s); 
}

Решение задачи: «Перевод из 16 в 10 систему счисления»

textual
Листинг программы
c = toupper(st[i]);
if (c>='A' || c<='F') k = c - 'A' + 10;
else if (c>='0' && c<='9') k = c - '0';
else printf("недопустимая цифра %c", c);

Объяснение кода листинга программы

  1. c - это переменная, которая получает значение символа из строки st[i].
  2. k - это переменная, которая используется для хранения десятичного значения числа.
  3. toupper(st[i]) - это функция, которая преобразует символ st[i] в верхний регистр.
  4. if (c>='A' || c<='F') - это условие, которое проверяет, является ли символ c буквой от 'A' до 'F'.
  5. k = c - 'A' + 10; - это выражение, которое вычисляет десятичное значение числа, добавляя 10 к разности символа c и 'A'.
  6. else if (c>='0' && c<='9') - это условие, которое проверяет, является ли символ c числом от '0' до '9'.
  7. k = c - '0'; - это выражение, которое вычисляет десятичное значение числа, вычитая '0' из символа c.
  8. else printf(недопустимая цифра %c, c); - это условие, которое проверяет, является ли символ c недопустимым числом. Если это так, то выводится сообщение об ошибке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.417 из 5
Похожие ответы