Перевод из 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);
Объяснение кода листинга программы
c
- это переменная, которая получает значение символа из строкиst[i]
.k
- это переменная, которая используется для хранения десятичного значения числа.toupper(st[i])
- это функция, которая преобразует символst[i]
в верхний регистр.if (c>='A' || c<='F')
- это условие, которое проверяет, является ли символc
буквой от 'A' до 'F'.k = c - 'A' + 10;
- это выражение, которое вычисляет десятичное значение числа, добавляя 10 к разности символаc
и 'A'.else if (c>='0' && c<='9')
- это условие, которое проверяет, является ли символc
числом от '0' до '9'.k = c - '0';
- это выражение, которое вычисляет десятичное значение числа, вычитая '0' из символаc
.else printf(
недопустимая цифра %c, c);
- это условие, которое проверяет, является ли символc
недопустимым числом. Если это так, то выводится сообщение об ошибке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д