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

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

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

Вот рабочий код программы, он работает только до 8 символов. А если больше 8 символов, то перевод уже неверный. Как решить эту проблему. Заранее, спасибо.
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <ctype.h>
  4. #include <math.h>
  5. #include <stdio.h>
  6.  
  7. int HEX_TO_DEC(char st[10])
  8. {
  9. int i, s, k, p;
  10. s = 0;
  11. p = strlen(st) - 1;
  12. for (i = 0; st[i] != '\0'; i++)
  13. {
  14. switch (toupper(st[i]))
  15. {
  16. case 'A':
  17. k = 10;
  18. break;
  19. case 'B':
  20. k = 11;
  21. break;
  22. case 'C':
  23. k = 12;
  24. break;
  25. case 'D':
  26. k = 13;
  27. break;
  28. case 'E':
  29. k = 14;
  30. break;
  31. case 'F':
  32. k = 15;
  33. break;
  34. case '1':
  35. k = 1;
  36. break;
  37. case '2':
  38. k = 2;
  39. break;
  40. case '3':
  41. k = 3;
  42. break;
  43. case '4':
  44. k = 4;
  45. break;
  46. case '5':
  47. k = 5;
  48. break;
  49. case '6':
  50. k = 6;
  51. break;
  52. case '7':
  53. k = 7;
  54. break;
  55. case '8':
  56. k = 8;
  57. break;
  58. case '9':
  59. k = 9;
  60. break;
  61. case '0':
  62. k = 0;
  63. break;
  64. }
  65. s = s + k * pow(16, p);
  66. p--;
  67. }
  68. printf("%d", s) ;
  69. return 0;
  70. }
  71. int main()
  72. {
  73. char s[10];
  74. char ch;
  75. printf ( "Plese, enter string: \n");
  76. scanf("%s", s) ;
  77. printf ("\nRezultant: \n");
  78. HEX_TO_DEC(s);
  79. scanf (s);
  80. }

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

textual
Листинг программы
  1. c = toupper(st[i]);
  2. if (c>='A' || c<='F') k = c - 'A' + 10;
  3. else if (c>='0' && c<='9') k = c - '0';
  4. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы