Перевод из 16 в 10 систему счисления (ограничить ввод данных) - C (СИ)
Формулировка задачи:
написал код, не могу понять какие условия вписать, чтобы нельзя было вводить ничего кроме букв и цифр
мысль была, что нельзя ничего вводить кроме с 48 до 57 символа в аски и так же с буквами от а до f, как реализовать совсем не понимаю
#include "stdio.h" #include "math.h" #include "windows.h" #include "string.h" int hexdec(char st[10]) { int i, s, k, p; s = 0; p = strlen(st)-1; for (i = 0; p>=0; i++, p--) { k=toupper(st[i]); s+=((k>='A')?10+k-'A':k-'0')*pow(16,p); } return s; } int main() { char st[10]; scanf ("%s", &st) ; printf ("Result: %d\n",hexdec(st)); system("pause"); }
Решение задачи: «Перевод из 16 в 10 систему счисления (ограничить ввод данных)»
textual
Листинг программы
#include "stdio.h" #include "math.h" #include "windows.h" #include "string.h" int hexdec(char st[10]) { int i, s, k, p; for (int i = 0; i < 10; ++i) if(('a'>= st[i] && st[i] <= 'f') ||('A'>= st[i] && st[i] <= 'F')) if('0'>=st[i] && st[i]<='9') s=0; p = strlen(st)-1; for (i = 0; p>=0; i++, p--){ k=toupper(st[i]); s+=((k>='A')?10+k-'A':k-'0')*pow(16.0,p); } return s; } int main() { char st[10]; scanf ("%s", &st) ; printf ("Result: %d\n",hexdec(st)); system("pause"); }
Объяснение кода листинга программы
- В функции hexdec происходит перевод строки из 16-ричной системы счисления в десятичную.
- Передается массив символов, представляющий собой строку в 16-ричной системе счисления.
- Переменная i используется как счетчик для цикла for, который проходит по каждому символу строки.
- Переменная s используется для хранения результата преобразования.
- Переменная k используется для хранения преобразованного символа.
- Переменная p используется как счетчик для цикла for, который проходит по каждому символу строки в обратном порядке.
- Переменная st[i] преобразуется в верхний регистр с помощью функции toupper.
- Переменная s увеличивается на произведение преобразования символа k на 16 в степени p.
- Результат функции hexdec возвращается в функцию main.
- В функции main происходит считывание строки с помощью функции scanf.
- Выводится результат преобразования с помощью функции printf.
- Происходит ожидание нажатия клавиши с помощью функции system.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д