Перевод из 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д