Рекурсия: проверить, является ли строка 16-ной записью числа и вернуть 10-ое значение - C (СИ)
Формулировка задачи:
помогите сделать программу с рекурсией, без смог сделать, а с рекурсией не получается
Задание: сделать функцию которая проверяет символьный рядок есть ли он 16-ным кодом и возвращает 10-ое значение, если нет то -1, з клавиатуры нужно ввести последовательность символьных рядков из 16-ми кодами
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <string.h> void isHex(char *r) { int i=0, j=0, k; char *z, *f; if(r==NULL) return; while(i<strlen(r)) { z=r[i]; if(isdigit(z)) { k=atoi(&z); j=j*16+k; i++; } else if(z=='a'||z=='A') { k=10; j=j*16+k; i++; } else if(z=='b'||z=='B') { k=11; j=j*16+k; i++; } else if(z=='c'||z=='C') { k=12; j=j*16+k; i++; } else if(z=='d'||z=='D') { k=13; j=j*16+k; i++; } else if(z=='e'||z=='E') { k=14; j=j*16+k; i++; } else if(z=='f'||z=='F') { k=15; j=j*16+k; i++; } else { j=-1; i=strlen(r); } } printf("%d\n", j); } int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); char SymbStr[100]; printf("Введіть послідовність символьних рядків: \n"); gets(SymbStr); char *pch=strtok(SymbStr," ,.-"); while (pch!='\0') { printf("%s - ", pch); isHex(pch); pch = strtok(NULL, " ,.-"); } return 0; }
Решение задачи: «Рекурсия: проверить, является ли строка 16-ной записью числа и вернуть 10-ое значение»
textual
Листинг программы
if ('a' <= z && z <= 'f') k = 10 + z - 'a'; else if ('A' <=z && z<='F') k = 10 +z - 'A'; else // Error
Объяснение кода листинга программы
- Проверяется, является ли символ
z
заглавной буквой от 'A' до 'F' (включительно). - Если это так, то
k
присваивается значение 10 +z
- 'A'. - Иначе, проверяется, является ли символ
z
строчной буквой от 'a' до 'f' (включительно). - Если это так, то
k
присваивается значение 10 +z
- 'a'. - Иначе, выполняется действие, помеченное как
// Error
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д